Bay*_*ock 2 private multiplexing socketchannel pubnub
我正在学习pubnub并且我阅读了他们的文档,但我找不到如何管理多房间聊天框.
默认情况下,任何人都可以收听频道.订阅它并在其上发布很容易.
我想要的是拥有一个主要的公共房间(到目前为止一直很好),但任何人都应该能够私下与其他人交谈而不会被其他用户阅读.
这些动态房间将被标记,用户应该能够从一个房间到另一个房间.
另一个要求是私下与某人交谈不会让你离开你订阅的其他房间(你仍然可以通知你在聊天时在另一个房间发布了一条新消息)
实现这一目标的最佳做法是什么?
我需要知道实现这一目标的最佳方法,因为文档仅描述了单个房间的基本情景,而且在互联网上没有任何相关内容.
谢谢.
PS:我知道PubNub一次不建议超过2个频道(即使我很难找到解释).
PPS:我正在使用punbub和socket.io
Ste*_*lum 10
您正在寻找一种方法来创建一个多房间聊天服务,可能类似于IRC客户端,您可以在其中加入并坐在多个聊天室中(例如,在freenode.net上).这是可能的,并且将采取一些特殊任务来使您正确.
您将从打开两个频道开始,一个用于主聊天室,另一个用于私人"ME"侧聊天.使用此侧私有"ME"频道,您将需要创建一个长且不可预测的会话ID样式频道名称,通常如下所示:
YTQyOGFiNWEtNTZmZC00OGVhLTgxZjktMWE3ZmMyMzc3MTRhCg==
Run Code Online (Sandbox Code Playgroud)
这就像是用户的参考ID.此ID可用于私人1对1聊天,而其他房间可用于群聊.您将使用我们称之为PubNub Access Manager(PAM)的访问控制管理来保护此群聊.
对于其他安全实践,您需要在我们的帮助台和知识库上查看PubNub安全支持中提供的安全建议指南.
现在我们已经建立了专用通道,通过您的私人服务器(可以提供权限的服务器)发送和接收聊天,以允许基于每个用户中继消息,可以实现安全通信.您可以通过阅读PubNub上从服务器发送事件到套接字IO客户端文档的这一部分来了解如何执行此操作.
第二个频道将用于所有房间的公共聊天.对于Multi-tab支持,您只需通过io.connect()方法添加新房间,即可在PubNub上使用Socket IO的通道多路复用功能.每次打开一个新选项卡时,您将通过io.connect()打开一个新的命名空间,您可以无限制地使用它.但请注意,您一次只能连接到不超过2个PubNub频道(您已在问题中注明过).
以下是订阅多个订阅源和类别的PubNub Socket IO方法:
作为一个快速的结论,您将使用安全方法建立一个私人"ME"通道,以基于每个用户发送/接收消息.以及推送所有公共聊天室数据的公共"聊天"频道.多路复用对于公共聊天非常重要.
小智 6
上面的答案在2012年是正确的,但从那以后发生了很多变化.私人聊天室可以使用PubNub Access Manager启用,该管理器明确授予特定频道上的发布/订阅访问权限.
这种方式的工作方式是通过访问令牌(又名"Auth Key").开发人员(您)创建一个Auth Key(基本上是任何字符串)并将其传递给PubNub Access Manager.然后,您可以为此Auth Key设置规则(即,Auth Key可以发布和/或订阅哪些通道).
此Auth Key提供给需要访问该通道的任何设备,并在设备订阅或发布到该通道时使用.
基本文档可在此处获得:http://www.pubnub.com/docs/javascript/tutorial/access-manager.html
授予60分钟读/写权限以将"privateChat"引导至auth_key:
pubnub.grant({
channel : 'privateChat',
auth_key : 'abxyz12-auth-key-987tuv',
read : true,
write : true,
ttl : 60
});
Run Code Online (Sandbox Code Playgroud)