Javascript Node.js+RabbitMQ+Socket.io
我们正在进行一个有一些微服务的项目。 我们有一个微服务a,它获取并保存数据,并向RabbitMQ发布一条消息,说明新数据已随CouchDB\u id进入,以便另一个微服务B可以处理它 问题在于第三种服务,我们有一个前端需要“实时”更新。 我们正在使用Socket.io进行客户端更新,但是node.js实例也会从中获取更新 后者如下:Javascript Node.js+RabbitMQ+Socket.io,javascript,node.js,socket.io,rabbitmq,microservices,Javascript,Node.js,Socket.io,Rabbitmq,Microservices,我们正在进行一个有一些微服务的项目。 我们有一个微服务a,它获取并保存数据,并向RabbitMQ发布一条消息,说明新数据已随CouchDB\u id进入,以便另一个微服务B可以处理它 问题在于第三种服务,我们有一个前端需要“实时”更新。 我们正在使用Socket.io进行客户端更新,但是node.js实例也会从中获取更新 后者如下: - RabbitMQ message comes in - Order is being retrieved from A (HTTP Request) - Dat
- RabbitMQ message comes in
- Order is being retrieved from A (HTTP Request)
- Data is processed (remapping for user interface, bla bla bla)
- Data is sent through Socket.io to the client.
我的问题是,如何在节点中干净地执行此操作
当然,我想分割文件,使每个文件都有自己的模块,并创建一个“知道”RabbitMQ和Socket.io的处理程序,这样当客户机处理了需要处理的数据时,它可以处理数据并向队列发送消息,反之亦然
如果需要更多信息,请告诉我。利用RabbitMQ和Socket.io之间的web服务器 当消息处理完毕并准备发送给用户时,web服务器可以使用socket.io检查用户是否在线。如果是,则将消息发送给用户。如果它们当前未连接到socket.io,请将消息存储在数据库中
当用户重新连接时,请检查数据库,查看是否有任何消息等待该用户,并在此时发送这些消息。不确定您到底在问什么?您不能根据事件来区分任务,例如socket.io有“join”、“leave”等消息,然后可以将这些消息解析为api模块。您甚至可以在消息前面加上调用前缀,即“io_join”,然后在api模块中,您可以使用对象来处理不同的事件消息。问题是我不知道谁不应该让RabbitMQ和Socket.io相互“了解”,但是只知道handler传入的HTTP请求和socket.io中的套接字之间的引用是什么?如果没有引用,数据应该如何发送到正确的套接字客户端?我想通过socket.io订购而不是HTTP请求将是更好的选择。。。