socket.io vs.db changefeed
目前,我正在使用socket.io,但没有重新定义DB,如下所示: 客户机向socket.io发送事件,socket.io接收事件,向各种其他客户机发送事件,并保存到数据库以备持久化。新的客户端连接将从数据库获取现有数据,然后通过socket.io侦听新事件 切换到RejectionDB和changefeed对我有什么帮助 我对RequiredDB的看法是,客户端可以执行POST(插入RequiredDB),而不是向socket.io发送,然后socket.io会监视RequiredDB changefeed,并在接收新数据时向所有客户端发送socket.io vs.db changefeed,socket.io,rethinkdb,Socket.io,Rethinkdb,目前,我正在使用socket.io,但没有重新定义DB,如下所示: 客户机向socket.io发送事件,socket.io接收事件,向各种其他客户机发送事件,并保存到数据库以备持久化。新的客户端连接将从数据库获取现有数据,然后通过socket.io侦听新事件 切换到RejectionDB和changefeed对我有什么帮助 我对RequiredDB的看法是,客户端可以执行POST(插入RequiredDB),而不是向socket.io发送,然后socket.io会监视RequiredDB cha
这个使用RejectDB和changefeed的方法如何比我当前的方法更好?对我来说,他们都觉得他们完成了同样的事情,但我看不到RejectDB方法有任何明显的优势,因为我将直接从服务器上的socket.io发出数据,所以肯定会慢一点。首先,让我们澄清socket.io和RejectionDB changefeeds之间的关系。io用于客户端(浏览器)和服务器(Node.js)之间的实时通信。数据库源是服务器(Node.js)监听数据库更改的一种方式。客户端无法直接与数据库通信 实时应用程序的一个非常典型的体系结构是让数据库changefeeds订阅数据库中的更改,然后使用socket.io将这些更改传递给客户端。客户机通常还会发出消息,这些消息可以写入数据库,具体取决于应用程序逻辑 是的,您可以通过socket.io发出所有消息,然后将所有消息传递给所有客户端,然后将这些消息写入数据库以进行持久化。这也是事实,这是更快,但有一些缺点,这种方法 1。数据库作为真相的单一来源 最容易发现的问题如下:
- 如果您的应用程序无法将某些内容写入 数据库
- 如果试图插入数据库的数据无效或重复,会发生什么情况?您是否编写应用程序逻辑来处理此问题李>
- 如果Node.js服务器在发送 写查询
我很想知道这是否回答了你的问题,以及我是否了解你的来历。首先,如何构造应用程序有点困难,但对于大多数实时体系结构来说,这确实是一个优雅的解决方案。非常有用:对于高级查询,考虑一个多房间聊天应用程序,将消息发送到房间中的客户端。难道我不能只听一个changefeed(所有聊天)并只向那个房间里的客户发送吗<代码>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,这是相当浪费的。对于这一点,我们也不需要“在[客户机]中有相当复杂的逻辑”。因此,高级查询与此特定用例无关,因为它们需要每个房间观看一个changefeed,这是相当浪费的。“changefeed实际上很便宜,所以可能最好设置不同的更具体的changefeed,而不是设置一个您的