我正在设计一个使用PubNub进行实时消息的应用程序。 我正面临着一对一聊天的问题。 这是我的情景:
我有一个用户A,所以如果A想要接收来自另一个的所有消息,A必须订阅一个名为PUB频道的公共频道。
用户B知道A的公共频道,因此B或其他人可以向该频道发送消息。 现在很好。
但是,当我打开应用程序时,我想显示我已发送消息的用户列表或新人发送给我的离线消息。
我可以从公共频道收到所有邮件。但如何过滤用户?如果有很多消息,这很难。
对于所有这些,我只想得到我和C,或我和B等的消息 有人对此有想法吗? 谢谢,
答案 0 :(得分:1)
每个用户都有自己的专用频道。 Bob拥有"bob12345"
频道,Sally拥有"sally12345"
频道。当用户想要彼此交谈时,他们会直接向所有者的频道名称发送消息。 Bob将在{Sally&#39>的频道上pubnub.publish({...})
。{/ p>
pubnub.publish({
channel : 'sally12345',
message : { from: 'bob12345', message: 'Hi!' }
});
请注意,您需要使用PubNub Access Manager to Grant Write-only access globally授予全局写入权限。同时授予对频道所有者的只读访问权限。
每个用户应始终将其消息本地存储在其设备上,或者加载所有历史记录并保存。
如果要加载来自特定用户对话的消息,则需要发布到旁边通道以索引消息以供将来检索。您可以通过发布到私人端频道来实现这一点,该频道是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);
}
});