热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

NodeJS将ws对象传递给子进程

如何解决《NodeJS将ws对象传递给子进程》经验,为你挑选了1个好方法。

我正在尝试将ws对象传递给子进程.

在"发送"功能下的子进程(https://nodejs.org/api/child_process.html)下的节点文档中,它表示第二个参数可以是子对象和父进程可以共享的TCP对象.

当我尝试传递一个ws对象时,它会说"抛出新的TypeError('这个句柄类型不能被发送');".我想这是因为它是一个ws对象,而不是一个tcp对象,但我想知道是否还有用ws对象而不是tcp对象实现相同的效果......?因为ws只是符合websocket标准的tcp对象的包装器.



1> Chad Robinso..:

不幸的是,WS套接字不是原始TCP对象.TCP套接字是第4层结构,可以作为原始句柄在进程之间传递(基本上,整数,在大多数底层操作系统隐喻中).操作系统本身处理所有TCP操作,如会话状态管理,这在进程时很重要想要传递手柄.

WebSockets完全不同.它们是第7层(HTTP)连接之上的隐喻构造.在第5层以上,应用程序本身进行了超出操作系统提供的相当多的通信 - 处理标头,COOKIE,WS连接状态等.这不仅可以在整数句柄中编码,因此Node当前不会有办法传递它们.

通常,大多数需要以这种方式传递连接的应用程序接受原始级别的TCP连接,将THAT传递给子级,然后允许子级从那里处理HTTP(和WS).他们不在主进程和子进程之间共享这项工作.对不起,这不是你想要的答案,但如果你已经围绕这个期望,你的应用程序架构将需要重新思考.顺便说一句,不仅仅是Node就是这样的.这也适用于任何其他语言,如Python或Ruby,因为所有这些只是Berkeley套接字结构的高级包装,并且该层中的套接字传递是基于句柄的,如上所述.


推荐阅读
author-avatar
萌萌虾
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有