Twilio IP 消息传递,如何取消订阅频道
Twilio IP messaging, how to unsubscribe from channel
我使用 Twilio IP 消息传递示例编写了一个简单的聊天作为起点。这个想法是在不同的客户和管理员之间建立私人渠道。每个客户将有一个单独的私人频道与管理员。管理员可以 select 使用哪个频道 open/subscribe 与特定客户聊天。
我现在面临的问题是我无法退订我之前订阅的频道。
这里是 link 以管理员身份登录,客户端 (test1) 和客户端 (test2):http://test.verbery.com/
重现问题的步骤:
- 单击“管理员 (admin1)”以管理员身份登录
- 在新打开的管理员聊天页面上,点击左侧面板上的“test1@qwe.com”频道订阅频道并接收该频道的消息。
- 在主页上点击“Client (test1)”以客户端身份登录并加入频道 test1@qwe.com 作为客户端。
- 从管理员向客户端 (test1) 和从客户端 (test1) 向管理员发送消息。
- 在管理员聊天中点击频道 test2@qwe.com 订阅这个新频道并与另一个客户端 (test2) 聊天;以客户端 (test2) 身份登录并与管理员聊天。
- 现在的问题是:您仍在接收来自 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
而不是 off
或 unbind
来做到这一点。这遵循 Node.js EventEmitter API.
personalChannel.removeListener("messageAdded");
如果有帮助请告诉我。
如果您不想离开或取消订阅频道,您可以这样做以删除频道中的所有事件:
activeChannel.removeAllListeners();
当我切换频道时,我会这样做。
我使用 Twilio IP 消息传递示例编写了一个简单的聊天作为起点。这个想法是在不同的客户和管理员之间建立私人渠道。每个客户将有一个单独的私人频道与管理员。管理员可以 select 使用哪个频道 open/subscribe 与特定客户聊天。
我现在面临的问题是我无法退订我之前订阅的频道。
这里是 link 以管理员身份登录,客户端 (test1) 和客户端 (test2):http://test.verbery.com/
重现问题的步骤:
- 单击“管理员 (admin1)”以管理员身份登录
- 在新打开的管理员聊天页面上,点击左侧面板上的“test1@qwe.com”频道订阅频道并接收该频道的消息。
- 在主页上点击“Client (test1)”以客户端身份登录并加入频道 test1@qwe.com 作为客户端。
- 从管理员向客户端 (test1) 和从客户端 (test1) 向管理员发送消息。
- 在管理员聊天中点击频道 test2@qwe.com 订阅这个新频道并与另一个客户端 (test2) 聊天;以客户端 (test2) 身份登录并与管理员聊天。
- 现在的问题是:您仍在接收来自 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
而不是 off
或 unbind
来做到这一点。这遵循 Node.js EventEmitter API.
personalChannel.removeListener("messageAdded");
如果有帮助请告诉我。
如果您不想离开或取消订阅频道,您可以这样做以删除频道中的所有事件:
activeChannel.removeAllListeners();
当我切换频道时,我会这样做。