0

我有一个 node.js 应用程序订阅了一个监听事件的频道。当它听到该事件时,它会将另一个事件发布到新频道。我一直在使用 MubSub 进行发布/订阅。我的问题是,无论我每次重新加载页面时做什么,都会有两个侦听器和两个发布,然后是 3、4、5、6 等。

我不明白为什么他们没有断开连接?

if (curURL == '/handwash') {

    db2.handwash.find({
        "event": "handwash"
    }).sort({
        "message.time": -1
    }).limit(10).forEach(function(error, x) {
        if (error || !x) {
            console.log("error getting items");
        } else {
            socket.emit('archive', x.message);
        }
    });


    channel2.subscribe('dealer out', function(message) {

        console.log("new dealer event " + message);
        db.events.find({
            "event": "wash"
        }).sort({
            "message.time": -1
        }).limit(1).forEach(function(error, x) {
            if (error || !x) {
                console.log("error getting items");
            } else {
                console.log("found last handwash..." + x.message.type + "....publishing");

                var message = ({

                        'tableid': 123,
                        'time': Date(),
                        'type': x.message.type,

                })

                channel.publish('handwash', message );

                socket.emit('message', message);
            }
        });


        //socket.emit('message', message);

    });

    socket.on("disconnect", function(s) {
        console.log("Disconnected from global handler");
    });
}
4

1 回答 1

0

问题是我使用 MubSub 订阅和发布消息。通过为我的连接创建一个变量然后用 unsubscribe() 关闭它来修复它;

var subscription = channelEvents.subscribe('pocket', function(message) {}
subscription.unsubscribe();
于 2013-11-12T14:28:57.450 回答