高速公路 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 会话和该会话的订阅。
你应该做的是检查点击是否两者都已经存在,如果是这样就什么都不做。
我正在为我们的客户建立一个博客,这样他们就可以 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 会话和该会话的订阅。
你应该做的是检查点击是否两者都已经存在,如果是这样就什么都不做。