Express.js - 如何将socket传递给child_process

时间:2016-11-10 15:45:08

标签: node.js express socket.io

根据这个

https://nodejs.org/api/child_process.html#child_process_example_sending_a_socket_object

您可以轻松地将套接字连接传递给子进程,以便它可以独立处理套接字事务。如何使用Express中提供的req.socket对象实现相同的功能,客户端使用io.socket.js发出套接字请求?你不能只做:

child.send("socket",req.socket")

因为req.socket不是net.Socket的实例所以它没有通过以下检查

if (handle instanceof net.Socket) {
  message.type = 'net.Socket';
} else if (handle instanceof net.Server) {
  message.type = 'net.Server';
} else if (handle instanceof process.binding('tcp_wrap').TCP ||
       handle instanceof process.binding('pipe_wrap').Pipe) {
  message.type = 'net.Native';
} else if (handle instanceof dgram.Socket) {
  message.type = 'dgram.Socket';
} else if (handle instanceof process.binding('udp_wrap').UDP) {
  message.type = 'dgram.Native';
} else {
  throw new TypeError("This handle type can't be sent");
}

当请求是普通的HTTP请求时,req.Socket似乎只是net.Socket的一个实例(与使用io.socket.js在客户端上启动相反)。

0 个答案:

没有答案