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

时间:2016-03-29 06:12:12

标签: javascript javascript-events twilio instant-messaging

我使用Twilio IP消息传递示例编写了一个简单的聊天作为起点。我们的想法是在各种客户和管理员之间建立私人渠道。每个客户端都有一个单独的私人频道和管理员。管理员可以选择打开/订阅哪个频道与特定客户聊天。

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

以下是以admin,client(test1)和client(test2)登录的链接:http://test.verbery.com/

重现问题的步骤:

  1. 点击“管理员(admin1)”以管理员身份登录
  2. 在新打开的管理聊天页面上,单击左侧面板上的“test1@qwe.com”频道,以订阅频道并接收此频道的消息。
  3. 在主页面上点击“客户端(test1)”以客户端身份登录,并加入渠道test1@qwe.com作为客户。
  4. 从admin向客户端(test1)发送消息,从客户端(test1)向admin发送消息。
  5. 在管理员聊天中点击频道test2@qwe.com订阅这个新频道并与其他客户聊天(test2);登录为客户端(test2)并与admin聊天。
  6. 现在的问题是:您仍在接收来自test1@qwe.com的消息 - 尝试将消息作为test1@qwe.com客户端发送。当您订阅test2@qwe.com频道时,您没有取消订阅test1@qwe.com
  7. 技术细节: 要订阅频道,我使用事件“onMessageAdded”来收听此频道的传入消息:

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

    要取消订阅我尝试unbind('onMessageAdded')off('onMessageAdded')的邮件,但它不起作用,js控制台说:unbind(或off)不是函数。

    如何取消订阅频道?

    提前致谢, 梅德

3 个答案:

答案 0 :(得分:5)

如果您不想离开或取消订阅频道,可以执行此操作以删除频道中的所有活动:

activeChannel.removeAllListeners();

当我在频道之间切换时,我这样做。

答案 1 :(得分:4)

Twilio开发者传道者在这里。

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

personalChannel.leave();

如果您希望保持与频道的连接,但停止收听传入的事件,则可以取消绑定您的听众。您实际上是使用removeListener而非offunbind执行此操作。这遵循Node.js EventEmitter API

personalChannel.removeListener("messageAdded");

让我知道这是否有帮助。

答案 2 :(得分:1)

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

这样的东西?

相关问题