高速公路 JS 订阅管理

Autobahn JS Subscription management

我正在为我们的客户建立一个博客,这样他们就可以 space 讨论不同的商业交易(每个商业交易都有一个参考编号,并有自己的信息)。

现在我能够使用 ZeroMQ 和 Autobahn 设置 Ratchet 来实现这一点。每当用户更新博客时,订阅他们的其他用户都会将信息推送到他们的浏览器中。

但是,我将订阅方法链接到主页中的一个按钮。 (整个想法是,他们将单击左侧菜单栏上的参考,博客条目将出现在屏幕的右侧)。

这是因为如果用户多次点击同一个参考,或者如果用户转到其他参考然后返回到第一个参考,只要博客上有更新,用户就会收到多次更新(每次点击一次 - >每次点击触发订阅)。

知道如何防止这种情况发生吗?

创建会话的 jquery 如下所示:

$('.reference-container').on('click', function(){
    idReferencia = $(this).attr('id');
    $('#modifyReference').val(idReferencia);

    console.log('Creating connection with server on topic: ' + idReferencia + '..');


    var conn = new ab.Session('wss://plt.prolog-mex.com/wss2/',

        function() {
            conn.subscribe(idReferencia, function(topic, data) {
                $('#messageBoard').prepend('<p class="message-nonown">'+data.article+'</p>')
                console.log('New article published to category "' + topic + '" : ' + data.title);
            });
        },
        function() {
            console.warn('WebSocket connection closed');
        },
        {'skipSubprotocolCheck': true}
    );
    console.log
});

您将在每次单击按钮时同时创建一个新的 WAMP 会话和该会话的订阅。

你应该做的是检查点击是否两者都已经存在,如果是这样就什么都不做。