【发布时间】:2013-05-27 20:01:25
【问题描述】:
我有 2 个软件组件想互相交流,
- node.js 网络应用程序
- 用 C 编写的专用服务器(一段相当简单的代码,处理一些我不想为其他语言包装的晦涩库)
我想要的对话很简单,
- 节点:设置资源 ID A
- C 应用程序:好的,这是引用编号
或
- 节点:删除此参考
- C 应用程序:当然,伙计。
有什么方法可以轻松地在两者之间传递消息吗?
我目前的理论想法是这样的:
- 在 2 个进程之间有 1 个 tcp/unix 套接字,1 个会话只是为了避免一直打开和关闭会话(也担心一次会太多)。
- 每个匹配的节点请求和 C 应用程序响应都具有相同的 ID(单个 tcp 会话上的 tcp-esque 会话)
- 每个相关节点请求都会向 C 应用程序生成消息,将响应对象存储在以会话 ID 作为键的某个哈希中。
- 有一个单节点线程来收集 C 应用程序回复,通过会话 id 查找响应对象并响应客户端
是不是非常低效?
node 中真的有线程支持吗? (一个简短的谷歌并没有带来任何具体的结果)
【问题讨论】:
-
节点是单线程的。但是,您可以同时运行多个进程。
-
你的计划听起来不错,我认为
-
使用消息队列(ZeroMQ、RabbitMQ 等),我不知道你为什么认为你需要多线程,因为 Node 中的套接字几乎总是非阻塞的。
-
不同节点进程可以共享同一个对象吗?
-
@DimaK:不,他们不能。