目前我正在使用不带RethinkDB的socket.io:
客户端向socket.io发出事件,socket.io接收事件,将其发给其他客户端,并保存到数据库以供持久化。新连接的客户端将从数据库中获取现有数据,然后通过socket.io监听新事件。
如果我切换到使用RethinkDB和changefeed会有什么帮助呢?
我认为使用RethinkDB的方式是客户端可以执行POST(插入到RethinkDB),而不是直接向socket.io发出事件,然后socket.io会观察RethinkDB changefeed,并在接收到新数据时向所有客户端发出事件。
相对于我的当前方法,使用RethinkDB和changefeed的优点是什么?对我来说,它们似乎都能实现同样的事情,但我没有看到RethinkDB方法的明显优势,因为我要去访问数据库,而不是直接从socket.io服务器发出事件,这肯定会慢一些。
r.table('chat').changes().run(r.conn, function(err, cursor) { cursor.each(function(err, row) { io.to('room-' + row.new_val.id, row.new_val); // 1 room }); });
... 因此,高级查询与此特定用例无关,因为它们涉及监视每个房间的一个 changefeed,这相当浪费。 我们也不需要在此处拥有“非常复杂的逻辑”来处理客户端。 - user3096484io.to('room-' + row.new_val.id, row.new_val);
,所以这一点也不困难。 - user3096484