使用PubNub进行多用户聊天



我正在设计一个使用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);
    }
});

最新更新