Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js+RabbitMQ+Socket.io_Javascript_Node.js_Socket.io_Rabbitmq_Microservices - Fatal编程技术网

Javascript Node.js+RabbitMQ+Socket.io

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

我们正在进行一个有一些微服务的项目。 我们有一个微服务a,它获取并保存数据,并向RabbitMQ发布一条消息,说明新数据已随CouchDB\u id进入,以便另一个微服务B可以处理它

问题在于第三种服务,我们有一个前端需要“实时”更新。 我们正在使用Socket.io进行客户端更新,但是node.js实例也会从中获取更新

后者如下:

- 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请求将是更好的选择。。。