我一直在尝试使用 paho for javascript 通过 mqtt 发送大消息。 但如果消息大于 8 kb,Websocket 将关闭,我无法发送消息。
我在连接后一直使用以下功能来发送消息。
function onConnect() {
console.log("onConnect");
var bigString ="";
client.subscribe("topic");
for (var i = 0;i <8200;i++){
bigString+="a"
}
message = new Paho.MQTT.Message(bigString);
message.destinationName = "topic";
client.send(message);
}
结果总是:
onConnectionLost:AMQJS0008I Socket closed.
如果长度低于 8000 字节,一切正常。 我正在使用 ActiveMQ 服务器。
这是泛美卫生组织的限制吗? 我该如何解决这个问题?
您所连接的服务器定义的最大数据包大小可能是 8kb。如果您尝试发送大于 8kb 的消息,服务器将关闭连接。因此,您需要确保发送的消息不超过服务器定义的最大数据包大小。最大数据包大小在服务器响应客户端 CONNECT 数据包而发送的 CONNACK 数据包中定义。参考 https://www.emqx.com/en/blog/best-practices-of-maximum-packet-size-in-mqtt。