我正在设计一个使用PubNub实时消息的应用程序。我面临着一个关于一对一聊天的问题。这是我的场景:
我有一个用户A,所以如果A想接收来自另一个用户的所有消息,A必须订阅一个公共频道,称为PUB频道。
用户B知道A的公共频道,所以B或其他人可以向该频道发送消息。现在很好。
但当我打开应用程序时,我想显示我发过信息的用户列表或新人发给我的离线信息。
我可以从我的公共频道获得所有消息。但是如何与用户一起过滤呢?在有很多消息的情况下,这是非常困难的。
有了所有这些,我只想得到我和C的信息,或者我和B的信息…等等有人对此有想法吗?谢谢,
PubNub多用户聊天与交流
每个用户都有自己的专用频道。Bob有"bob12345"
频道,Sally有"sally12345"
频道。当用户想要相互交谈时,他们会直接向所有者的频道名称发送消息。鲍勃将在萨利的频道主持pubnub.publish({...})
。
pubnub.publish({
channel : 'sally12345',
message : { from: 'bob12345', message: 'Hi!' }
});
请注意,您将希望使用PubNub access Manager授予全局写入访问权限,以全局授予仅写入访问权限。还向频道所有者授予只读访问权限。
每个用户都应该将他们的消息本地存储在他们的设备上,或者加载所有历史记录并保存。
如何仅加载两个用户之间的对话
如果您想从特定用户的对话中加载消息,则需要发布到一个侧通道以索引消息,以便将来检索。您可以通过将Bob和Sally的频道名称串联发布到专用侧频道来实现这一点。
// Publish a second time to index the message in a side channel.
pubnub.publish({
channel : 'history-sally12345-bob12345',
message : { from: 'bob12345', message: 'Hi!' }
});
现在,您可以加载该特定用户的历史记录。
// Load history for dedicated conversation.
pubnub.history({
channel : 'history-sally12345-bob12345',
callback : function(messages) {
console.log(messages);
}
});