javascript - Autobahn JS 订阅管理

标签 javascript jquery zeromq autobahn ratchet

我正在我们的客户和我们之间建立一个博客,以便他们可以有一个空间来讨论不同的商业交易(每笔商业交易都有一个引用号并有自己的信息)。

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

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

造成这种情况的原因是,如果用户多次点击同一个引用,或者用户转到其他引用然后返回到第一个引用,则每当博客上有更新时,用户都会收到多个更新(每次点击一次 -> 每次点击都会触发订阅)。

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

创建 session 的 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 session 和该 session 的订阅。

您应该做的是检查点击是否两者都已存在,如果是这种情况,则不执行任何操作。

关于javascript - Autobahn JS 订阅管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42867438/

相关文章:

javascript - 稍后加载元素,以提高页面速度,但使其对 SEO 可见?

javascript - 使用数组 javascript 中多个对象的值构建 map

javascript - 如何将焦点/滚动顶部设置为循环中的第一项?

javascript - 有没有办法在 jQuery 选择器中使用 JavaScript ParentNode 而不是 Closest() ?

python - 如何使用 ZeroMQ 通过 TCP 套接字发送 PNG 图像?

zeromq - 如何在Windows上设置ZeroMQ以与OpenPGM一起使用?

javascript - 旋转木马图像没有响应

javascript - 如何在 javascript 中 5 秒后转到链接

javascript - knockout 中的自定义下拉列表

python - ZeroMQ 管道模式