nginx - 防止 NGINX 缓冲包
问题描述
我需要使用 NGINX 代理修改 MQTT 发布包的主题。我创建了一个由 js_filter 调用的 njs 函数。
function updateTopic(s) {
s.log("buf: " + s.buffer.toString('hex'));
if (!s.fromUpstream) {
if(s.buffer.indexOf("topic") != -1){
s.buffer = s.buffer.replace("topic", "mopic").toBytes();
s.log("new buffer: " + s.buffer.toString('hex'));
}
}
return s.OK;
}
返回:
缓冲区:300f0005746f7069636d65737361676533
新缓冲区:300f00056d6f7069636d65737361676533
此函数正确更新 s.buffer,但在收到另一种类型的包之前不会传输包。当收到订阅、断开连接、ping 消息时,所有缓冲的消息都会立即传输。
如果这个函数不替换一个包,它会被立即传输。
更改 s.buffer 后我应该做一些特别的事情吗?
解决方案
原来是由于一个错误,将在以后的版本中修复。
推荐阅读
- regex - 重命名文件夹中的所有文件以在 Unix/Mac 上的文件名中包含校验和
- git - 如何在 Android Studio 中使用 Git 命令恢复和删除提交?
- laravel - 正确修复 Laravel Connecftion.php 函数 'prepareBindings' 将布尔值转换为字符串 'true' 'false' 而不是整数
- docker - docker run 命令的权限问题
- tailwind-css - 如何在tailwindcss的最大高度中添加自定义26rem值
- c# - 如何录制在pictureBox上播放的视频?
- windows - 将用户添加到本地桌面管理员组后,如何在不注销/登录的情况下立即强制权限
- css - 如何在 CSS 模块中添加多个动态类?
- sql - 在 SQL 上计算给定事件的订阅者数量
- javascript - 在运行时为对象数组中的相同键推送不同的值 React native