客户端可能会重载mqtt代理

时间:2015-12-05 01:06:14

标签: javascript node.js mqtt

我正在使用MQTT node.js mosca broker。我用这个命令运行它;

def combine(v1:SparseVector, v2:SparseVector):SparseVector = {
    val size = v1.size + v2.size
    val maxIndex = v1.size
    val indices = v1.indices ++ v2.indices.map(e => e + maxIndex)
    val values = v1.values ++ v2.values
    new SparseVector(size, indices, values)
}

我有一个浏览器mqtt客户端。代码看起来像这样;

mosca -v --http-port 3000 --http-bundle --http-static ./ | bunyan

假设我有许多类似的浏览器客户端,每个客户端订阅不同的mqtt主题。用户运行调用代码的网页,然后关闭选项卡。没有明确关闭连接或关闭主题的代码。 MQTT代理会死于RAM过载吗?

1 个答案:

答案 0 :(得分:1)

当关闭选项卡时,websocket连接也将关闭,因此代理应该清理会话,如果在keepalive期间没有收到任何消息或ping,那么连接也将被清除。

无法关闭主题,没有所有权或开放/封闭的概念,它们只是邮件路由的标识符。

如果您使用大于0的QOS和持久会话,那么在等待特定客户端重新连接时消息可能会累积,但编写良好的代理应将这些存储在磁盘而不是内存中。