Javascript 让客户一直听,而不是只听一次

Javascript 让客户一直听,而不是只听一次,javascript,angularjs,node.js,mqtt,Javascript,Angularjs,Node.js,Mqtt,我在angularjs和node.js mqtt模块上运行了一个mqtt客户机。有一个简单的交换机,每当交换机状态更改时,它将在mqtt代理上发布主题 相关的html代码如下所示 <div ng-controller="SwitchCtrl"> <md-switch ng-model="switch_status.sw1" aria-label="SwitchCtrl" ng-change="onChange(switch_status.sw1)">

我在angularjs和node.js mqtt模块上运行了一个mqtt客户机。有一个简单的交换机,每当交换机状态更改时,它将在mqtt代理上发布主题

相关的html代码如下所示

<div ng-controller="SwitchCtrl">
    <md-switch ng-model="switch_status.sw1" aria-label="SwitchCtrl" ng-change="onChange(switch_status.sw1)">
        Wireless Light Switch: {{ switch_status.sw1 }}
    </md-switch>
</div> 
我的问题是控制器代码只运行一次。我希望控制器中的这个代码段永远保持运行,以便客户机知道在订阅主题上发布的新消息

        mqtt_client.on("message", function(topic, payload) {
            console.log([topic, payload].join(": "));
            mqtt_client.end();
        });

如何使mqtt客户机始终侦听,而不是只侦听一次?

注释掉结束mqtt_客户机连接的行。那就行了!这要归功于其中一位评论者floribon,他首先在自己的评论中给出了答案

mqtt_client.on("message", function(topic, payload) {
            console.log([topic, payload].join(": "));
            //mqtt_client.end();
        });

为什么要使用mqtt_client.end;在你的听众中?保持它的活力,你会得到我认为的所有通知,尽管你让我觉得自己像个该死的傻瓜,但我并不熟悉你的建议:请提供它作为答案。这是正确的答案:
mqtt_client.on("message", function(topic, payload) {
            console.log([topic, payload].join(": "));
            //mqtt_client.end();
        });