diff --git a/www/common/outer/cursor.js b/www/common/outer/cursor.js index 709b53a91..f8473fd18 100644 --- a/www/common/outer/cursor.js +++ b/www/common/outer/cursor.js @@ -148,12 +148,14 @@ define([ return void cb({error: err}); }); - network.on('reconnect', function () { + var onReconnect = function () { if (!ctx.channels[channel]) { console.log("cant reconnect", channel); return; } network.join(channel).then(onOpen, function (err) { console.error(err); }); - }); + }; + chan.onReconnect = onReconnect; + network.on('reconnect', onReconnect); }; var updateCursor = function (ctx, data, client, cb) { @@ -173,6 +175,10 @@ define([ var channel = ctx.channels[cursorChan]; if (channel.padChan !== padChan) { return; } if (channel.wc) { channel.wc.leave(); } + if (channel.onReconnect) { + var network = ctx.store.network; + network.off('reconnect', channel.onReconnect); + } delete ctx.channels[cursorChan]; return true; }); @@ -190,6 +196,10 @@ define([ chan.clients = chan.clients.filter(filter); if (chan.clients.length === 0) { if (chan.wc) { chan.wc.leave(); } + if (chan.onReconnect) { + var network = ctx.store.network; + network.off('reconnect', chan.onReconnect); + } delete ctx.channels[k]; } }