使用PubNub进行多用户聊天

时间:2014-04-13 02:28:26

标签: chat channel multi-user pubnub

我正在设计一个使用PubNub进行实时消息的应用程序。 我正面临着一对一聊天的问题。 这是我的情景:

我有一个用户A,所以如果A想要接收来自另一个的所有消息,A必须订阅一个名为PUB频道的公共频道。

用户B知道A的公共频道,因此B或其他人可以向该频道发送消息。 现在很好。

但是,当我打开应用程序时,我想显示我已发送消息的用户列表或新人发送给我的离线消息。

我可以从公共频道收到所有邮件。但如何过滤用户?如果有很多消息,这很难。

对于所有这些,我只想得到我和C,或我和B等的消息 有人对此有想法吗? 谢谢,

1 个答案:

答案 0 :(得分:1)

PubNub多用户聊天和通信

每个用户都有自己的专用频道。 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);
    }
});