Parse platform 带存储的Pubnub聊天应用程序
我正在寻找开发一个聊天应用程序与Pubnub,我想确保所有的聊天信息是发送存储在数据库中,还想发送聊天信息 我发现我可以使用Parse with pubnub来提供存储选项,但我不确定如何设置这两个选项,使聊天中发送的消息和图像存储在数据库中 以前有人用pubnub和parse做过这个吗?有没有其他简单的选项可以与pubnub一起使用而不是使用parse?Sutha 你所寻求的不是一个微不足道的解决方案,除非你谈论的是有限数量的最终用户。所以我不会说没有“简单”的解决方案,但有解决方案 原因是服务器需要监听(订阅)每个活动的聊天频道,并将发送的消息存储到数据库中。想象一下,你的应用程序可以扩展到100万用户(甚至不需要那么大,但这个数字应该可以帮助你认识到,如果多个服务器实例正在以非重叠方式收听频道,或者使用重叠但使用服务器队列实施和重复数据消除消息,那么扩展会变得多么棘手) 也就是说,是的,有些PubNub客户已经实现了这样的解决方案——顺便说一句,解析并不是实现这一点的关键 您有三个基本选项来实现此功能:Parse platform 带存储的Pubnub聊天应用程序,parse-platform,push-notification,chat,real-time,pubnub,Parse Platform,Push Notification,Chat,Real Time,Pubnub,我正在寻找开发一个聊天应用程序与Pubnub,我想确保所有的聊天信息是发送存储在数据库中,还想发送聊天信息 我发现我可以使用Parse with pubnub来提供存储选项,但我不确定如何设置这两个选项,使聊天中发送的消息和图像存储在数据库中 以前有人用pubnub和parse做过这个吗?有没有其他简单的选项可以与pubnub一起使用而不是使用parse?Sutha 你所寻求的不是一个微不足道的解决方案,除非你谈论的是有限数量的最终用户。所以我不会说没有“简单”的解决方案,但有解决方案 原因是服
- 通道激活:在解析数据库中记录“开始聊天”时间标记
- 通道不活动:在解析数据库中记录“结束聊天”时间标记
- 非活动事件是使用为该频道录制的开始/结束时间标记从PubNub:
PubNub.history({channel:channelName,start:startTT,end:endTT})获取频道历史的进程的开始
- 您需要呼叫,直到收到<100条消息(100是您一次最多可以检索的消息数)
- 当您检索这些消息时,您将把它们保存到您的解析数据库中
我们也有一个 Sutha,我不能说有任何“简单”的解决方案,但解析可能会让这更容易一些。我们确实有一些客户不用解析就可以做到这一点,但解决方案并非微不足道。我们很快会回复一些指导。好的,当然,我会等待你对此的回复。我面临的主要问题是保存通过聊天信息发送的数据和图像。图像将上载到服务器并发送链接,但也必须将其存储在消息中。此外,您应该使用PubNub API仅发布指向上载图像的路径(或url),并将实际图像(可能在base64中)分别存储在Parse中。感谢各位,这真的很有帮助。关于通道活动和非活动REST API调用的一个问题是,有没有办法在最后一次活动会话后仅从通道获取新消息?图像路径上的Good point@girlie_mac(例如,使用Amazon S3进行图像存储)。Sutha,是的,您只需要保留上一个活动会话的timetoken,并使用该timetoken作为结束参数(而不是您可能假设的开始参数)保存调用历史记录。让我知道这是否澄清了这一点。Sutha,不知道你所说的“只获取新消息”是什么意思。活动/非活动通道RESTful webhooks只报告通道占用率从0到1(活动)和从1到0(非活动)的时间-不多或少。通过查看通道查询参数,可以筛选出对您重要的通道。如果有帮助,请告诉我。可能最好发电子邮件到support@pubnub.com或者创建一个新的SO帖子。只是对webhooks故事的更新-PubNub现在拥有用于所有状态事件(不仅仅是活动/非活动通道)的webhooks:加入、离开、超时和状态更改。询问support@pubnub.com为您配置这些。
var pubnub = PUBNUB({
publish_key : your_pub_key,
subscribe_key : your_sub_key
});
var msg = ... // get the message form your UI text box or whatever
pubnub.publish({
// this is some variable you set up when you enter a chat room
channel: chat_channel,
message: msg
callback: function(event){
// DISCLAIMER: code pulled from [Parse example][4]
// but there are some object creation details
// left out here and msg object is not
// fully fleshed out in this sample code
var ChatMessage = Parse.Object.extend("ChatMessage");
var chatMsg = new ChatMessage();
chatMsg.set("message", msg);
chatMsg.set("user", uuid);
chatMsg.set("channel", chat_channel);
chatMsg.set("timetoken", event[2]);
// this ChatMessage object can be
// whatever you want it to be
chatMsg.save();
}
error: function (error) {
// Handle error here, like retry until success, for example
console.log(JSON.stringify(error));
}
});