防止NGINX缓冲软件包

时间:2018-08-01 16:05:33

标签: nginx proxy nginx-reverse-proxy

我需要使用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后我应该做些特别的事情吗?

1 个答案:

答案 0 :(得分:0)

原来是由于错误所致,它将在更高版本中得到修复。

https://github.com/nginx/njs/issues/45