Socket.IO 和 PubNub 管理聊天服务的私人房间
您正在寻求一种创建多房间聊天服务的方法,可能类似于 IRC 客户端,您可以在其中加入并坐在多个聊天室(例如在 freenode.net 上)。这是可能的,并且需要一些特殊的任务来完成它。
您将首先打开两个通道,一个用于主聊天室,一个用于您的私人“ME”侧聊天。使用此侧私有“ME”通道,您将需要创建一个长且不可预测的会话 ID 样式通道名称,通常如下所示:
YTQyOGFiNWEtNTZmZC00OGVhLTgxZjktMWE3ZmMyMzc3MTRhCg==
这就像用户的参考 ID。该ID可用于私人一对一聊天,另一个房间可用于群聊。您将使用我们称之为访问控制管理的方式来保护该群聊的安全PubNub 访问管理器 https://www.pubnub.com/products/access-manager/ (PAM).
对于其他安全实践,您需要查看我们的安全建议指南,网址为:PubNub 的安全支持 https://support.pubnub.com/support/search/solutions?term=security在我们的帮助台和知识库上。
现在我们已经建立了私人通道,通过您的私人服务器(可以提供权限的服务器)发送和接收聊天,允许基于每个用户中继消息,从而可以实现安全通信。您可以通过阅读本节来了解如何执行此操作将事件从服务器发送到 Socket IO 客户端 https://github.com/pubnub/pubnub-api/tree/493d7fc97fb683379fc78be3ca7ad9bc97eb4200/socket.io/non-socket-io-communicationPubNub 上的文档。
第二个频道将用于所有房间的公共聊天。对于多选项卡支持,您只需通过 io.connect() 方法添加新房间,即可使用 PubNub 上 Socket IO 的通道复用功能。每次打开新选项卡时,您都会通过 io.connect() 打开一个新的命名空间,您可以无限使用该命名空间。但请注意,您一次只能连接到不超过 2 个 PubNub 频道(您已经在问题中指出了这一点)。
以下是订阅多个提要和类别的 PubNub Socket IO 方法:
Socket.IO 文档
https://github.com/pubnub/pubnub-api/tree/493d7fc97fb683379fc78be3ca7ad9bc97eb4200/socket.io#restricting-yourself-to-a-namespace https://github.com/pubnub/pubnub-api/tree/493d7fc97fb683379fc78be3ca7ad9bc97eb4200/socket.io#restricting-yourself-to-a-namespace
Vimeo 上的 Socket.IO 视频
http://vimeo.com/34496366 http://vimeo.com/34496366
Socket.IO 多路复用代码示例
https://github.com/pubnub/pubnub-api/tree/493d7fc97fb683379fc78be3ca7ad9bc97eb4200/socket.io/多路复用 https://github.com/pubnub/pubnub-api/tree/493d7fc97fb683379fc78be3ca7ad9bc97eb4200/socket.io/multiplexing
总而言之,您将使用安全方法建立私有“ME”通道,以按用户发送/接收消息。还有一个公共“聊天”频道,推送所有公共聊天室数据。多路复用对于公共聊天非常重要。