我正在使用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过载吗?
答案 0 :(得分:1)
当关闭选项卡时,websocket连接也将关闭,因此代理应该清理会话,如果在keepalive期间没有收到任何消息或ping,那么连接也将被清除。
无法关闭主题,没有所有权或开放/封闭的概念,它们只是邮件路由的标识符。
如果您使用大于0的QOS和持久会话,那么在等待特定客户端重新连接时消息可能会累积,但编写良好的代理应将这些存储在磁盘而不是内存中。