Twilio IP 消息传递,如何取消订阅频道

Twilio IP messaging, how to unsubscribe from channel

我使用 Twilio IP 消息传递示例编写了一个简单的聊天作为起点。这个想法是在不同的客户和管理员之间建立私人渠道。每个客户将有一个单独的私人频道与管理员。管理员可以 select 使用哪个频道 open/subscribe 与特定客户聊天。

我现在面临的问题是我无法退订我之前订阅的频道。

这里是 link 以管理员身份登录,客户端 (test1) 和客户端 (test2):http://test.verbery.com/

重现问题的步骤:

  1. 单击“管理员 (admin1)”以管理员身份登录
  2. 在新打开的管理员聊天页面上,点击左侧面板上的“test1@qwe.com”频道订阅频道并接收该频道的消息。
  3. 在主页上点击“Client (test1)”以客户端身份登录并加入频道 test1@qwe.com 作为客户端。
  4. 从管理员向客户端 (test1) 和从客户端 (test1) 向管理员发送消息。
  5. 在管理员聊天中点击频道 test2@qwe.com 订阅这个新频道并与另一个客户端 (test2) 聊天;以客户端 (test2) 身份登录并与管理员聊天。
  6. 现在的问题是:您仍在接收来自 test1@qwe.com 的消息 - 尝试以 test1@qwe.com 客户端的身份发送消息。当您订阅 test2@qwe.com 频道时,您还没有退订 test1@qwe.com

技术细节: 为了订阅一个频道,我使用了一个事件“onMessageAdded”来收听该频道的传入消息:

// Listen for new messages sent to the channel
personalChannel.on('messageAdded', function(message) {
    printMessage(message.author, message.body);
});

要取消订阅消息,我已尝试 unbind('onMessageAdded')off('onMessageAdded') 但它不起作用,js 控制台显示:取消绑定(或关闭)不是函数。

知道如何取消订阅频道吗?

personalChannel.on('memberLeft', function(member) {
  printMessage(member.identity + 'has left the channel.');
});

是这样的吗?

这里是 Twilio 开发人员布道者。

Bob Sponge 是对的,您需要调用 leave() on the channel 才能正确离开它。

personalChannel.leave();

如果您希望与频道保持连接,但停止收听传入事件,您可以取消绑定您的收听者。实际上,您会使用 removeListener 而不是 offunbind 来做到这一点。这遵循 Node.js EventEmitter API.

personalChannel.removeListener("messageAdded");

如果有帮助请告诉我。

如果您不想离开或取消订阅频道,您可以这样做以删除频道中的所有事件:

activeChannel.removeAllListeners();

当我切换频道时,我会这样做。