我正在我们的客户和我们之间建立一个博客,以便他们可以有空间谈论不同的商业交易(每个商业交易都有一个参考编号并拥有它自己的信息)。
现在我能够使用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
});
答案 0 :(得分:1)
您在每次点击按钮时都会在该会话中创建新的WAMP会话和订阅。
你应该做的是检查点击两者是否已经存在,如果是这种情况则不做任何事情。