检索deepstream.io中的记录列表

时间:2015-06-24 10:34:49

标签: chat rethinkdb deepstream.io

我目前正在实施一个简单的聊天,以了解如何使用deepstream.io。是否有一种简单的方法可以从记录列表中获取间隔?想象一下用户想要通过在历史记录中滚动来获取旧聊天消息的场景。我在文档中找不到任何关于此内容的内容,而且我已经阅读了源代码而没有运气。

我最好直接与数据库(例如RethinkDb)合作,还是通过深度方式轻松实现这一目标?

1 个答案:

答案 0 :(得分:6)

第一:坏消息: deepstream.io纯粹是一个消息传递服务器 - 它不会查看通过它的数据。这意味着任何类型的查询功能都需要由另一个系统提供,例如,连接到RethinkDB的客户端。

话虽如此:有好消息:

我们还在考虑将聊天功能(包括广泛的历史记录保存和搜索)添加到我们的应用程序中。

由于聊天消息是不可变的(一旦发送就不会改变),我们将使用深流事件而不是记录。为了便于保持聊天记录,我们将创建一个“聊天历史记录提供程序”,一个位于深层和数据库之间的节点进程,并侦听以'chat-'开头的任何事件。 (假设您的聊天事件已命名 chat-<chat-name>/<message-id>,例如chat-idle-banter/254kbsdf-5mb2soodnv

在很高的层面上,我们的聊天记录提供商将如下所示:

ds.event.listen( /chat-*/, function( chatName, messageData ) {
    //Add the timestamp on the server-side, otherwise people
    //can change the order of messages by changing their system clock
    messageData.timestamp = Date.now();
    rethinkdbConnector.set( chatName, messageData );
});

ds.rpc.provide( 'get-chat-history', function( data, response ){
    //Query your database here
});

目前deepstream仅支持“监听”记录,但即将推出的版本将为事件和rpcs提供相同类型的功能。