socket.io根据客户端传递的id向客户端发送数据

时间:2013-12-12 17:26:05

标签: node.js architecture express socket.io

假设我有一个休息终点,当调用它时会启动一个长时间运行的进程服务器端,例如

http://host/api/program/start

我希望将该进程的任何更新/输出从服务器端推送到客户端。

我认为其余的调用将返回某种唯一的id,客户端在连接到websocket时可以使用它来仅接收有关该特定进程的更新。

我必须考虑缓存来自进程的输出/更新,如果它们在进程的第一个输出之前没有连接就发送到客户端,但无论如何,最好的方法是什么?套接字数据处理?我能以某种方式使用socket.io房间/命名空间吗?

1 个答案:

答案 0 :(得分:0)

如果您真的想这样做,我建议通过初始start调用生成ID,然后将其作为参数传递给长时间运行的进程。然后,该进程将所有消息发布到该ID(适当的客户端也在监听)。

但是,我会劝阻你不要采用这种方法。有很多方法可以在Node中处理子进程,因此您可能需要更多地查看这些选项,以免最终处理僵尸进程。

首先想到的是ChildProcess。另一种选择是WebWorker Threads。这些中的任何一个都是正确的(我认为)你试图做的,但允许你对子进程保持更多的控制。