带有消息历史记录的 PubNub 聊天
好消息:您可以轻松编写一个聊天应用程序,为每个用户分配许多不同的频道,还可以使用PubNub 的实时网络 - 高可用性全球分布式存储服务保存消息历史记录。使用此服务,您可以从最近的数据中心有选择地将消息直接加载到移动/Web 客户端设备上,以获取过去的消息历史记录,而且您也可以使用存储检索 API 将消息加载到您自己的服务器中。让我们看看它如何与以下聊天应用程序一起使用:
Chat with History JavaScript 源代码
订阅您的频道名称以接收来自其他用户的消息。还可以从以前的聊天中加载历史记录。USER_ID
<script src="https://cdn.pubnub.com/pubnub.min.js"></script>
<script>(function(){
// INIT
var channel = 'USER_ID-123456';
var pubnub = PUBNUB.init({
subscribe_key : 'demo',
publish_key : 'demo'
});
// CHAT MESSAGE RECEIVER
function chat(message) {
// process chat message here...
}
// LOAD HISTORICAL MESSAGES
pubnub.history({
channel : channel, // USER_ID Channel
limit : 50, // Load Last 50 Messages
callback : function(msgs) { pubnub.each( msgs[0], chat ) }
});
// PUBNUB REAL-TIME NETWORK HA-TCP STREAM CONNECTION
// FOR RECEIVING INCOMING CHAT MESSAGES
pubnub.subscribe({
channel : channel, // USER_ID Channel
connect : connect, // Connected - Ready to Receive Messages
callback : chat // Callback Processor
});
})();</script>
这是移动/网络客户端应用程序上的聊天应用程序的基础。现在,您可以轻松地向全球提供商加载/保存消息。接下来,您将希望使用 PubNub REST 接口从 PHP 将这些消息加载到您的服务器上。
在 PHP 后端通过 REST API 加载存储的消息
您将使用 REST 接口根据需要从 PHP 后端服务器收集以前发布的消息。您实际上可能不需要此步骤,因为数据存储在 PubNub 的全球实时网络中,您的消息在该网络中被复制到许多地理区域,以实现可靠性和高读/写性能。
PubNub 存储/历史 V2 REST API 文档 - https://gist.github.com/stephenlb/d53f4cc3a891c03b478e
休息请求
http://pubsub.pubnub.com/v2/history/sub-key/demo/channel/my_channel?count=5
REST 响应
[["Pub1","Pub2","Pub3","Pub4","Pub5"],13406746729185766,13406746845892666]
您还可以使用PubNub PHP SDK来帮助解决一些复杂问题。您可以在此处找到 PubNub PHP SDK:https ://github.com/pubnub/php并使用此示例加载历史记录:
<?php
$pubnub = new Pubnub(
"demo", ## PUBLISH_KEY
"demo", ## SUBSCRIBE_KEY
"", ## SECRET_KEY
false ## SSL_ON?
);
$history_data = $pubnub->history(array(
'channel' => $channel,
'count' => 100,
'end' => "13466530169226760"
));
?>
有关 PubNub 上的存储 REST API 的更多详细信息
请点击此链接进一步深入了解 PubNub 存储 API:https ://gist.github.com/stephenlb/d53f4cc3a891c03b478e - 本指南将帮助回答有关存储 REST API 的更多详细信息。
更多使用历史的完整 GUI 聊天客户端
以下是一个可以帮助您入门的群聊,它是使用 Bootstrap CSS 框架编写的 - https://github.com/pubnub/real-time-stocks/#simple-embedded-chat-application