【问题标题】:Twilio IP messaging, how to unsubscribe from channelTwilio IP 消息传递,如何取消订阅频道
【发布时间】:2016-03-29 06:12:12
【问题描述】:

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

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

这是以管理员、客户端 (test1) 和客户端 (test2) 身份登录的链接:http://test.verbery.com/

重现问题的步骤:

  1. 点击“Admin (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.leave()

标签: javascript twilio dom-events instant-messaging


【解决方案1】:

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

activeChannel.removeAllListeners();

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

【讨论】:

  • 正是我需要的。
【解决方案2】:

这里是 Twilio 开发者宣传员。

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

personalChannel.leave();

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

personalChannel.removeListener("messageAdded");

让我知道这是否有帮助。

【讨论】:

    【解决方案3】:
    personalChannel.on('memberLeft', function(member) {
      printMessage(member.identity + 'has left the channel.');
    });
    

    这样的?

    【讨论】:

    • 感谢您的帮助!这将侦听当另一个成员取消订阅频道而不是取消订阅相关的实际成员时触发的事件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多