【发布时间】:2023-03-03 06:36:20
【问题描述】:
我需要修改使用 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;
}
返回:
buf:300f0005746f7069636d65737361676533
新缓冲区:300f00056d6f7069636d65737361676533
此函数正确更新 s.buffer,但在收到另一种类型的包之前不会传输包。当接收到订阅、断开、ping 消息时,所有缓冲的消息都将立即传输。
如果这个函数不替换一个包,它会被瞬时传输。
更改 s.buffer 后我应该做一些特别的事情吗?
【问题讨论】:
标签: nginx proxy nginx-reverse-proxy