windows下node.js进程间传递客户端socket的一些规律

最近在update我的一个github项目的时候,想要把原来单一进程的模式改成多进程的模式。

事情是这样的,我做了一个HTTP服务器,支持动态脚本。

在完成了一大堆各种各样的特性后,遇到了一个脚本超时的问题。

在我的HTTP服务器中,将页面分成了Template和Activity两个部分,一个是用做VIEW的,一个是用作MODULE的,也就是类似于ASP啦。

但是,由于NODE.js是单进程的,所以我无法控制Activity中的代码(为用户脚本)。

所以,如果Activity中出现死循环,那么整个http服务器就会因此死掉,所以我想做一个检测脚本超时的特性。

===================================割了==========================

好了,进入正题。

我的想法是这样的,从主进程来接受socket,然后send给子进程,然后由子进程进行相关的操作(包括域名分析、POST读取等行为)之后执行请求的用户Activity。这个字进程每隔一段时间向主进程发送一个alive消息,如果超过了一段时间子进程都没有向主进程发送alive消息,那么主进程就kill掉子进程,防止超时的脚本继续执行,之后新启一个进程代替刚才被kill掉的子进程。

想法是这样的,但是遇到了一些问题。

本以为这个事情可以很轻松的完成,但是在主进程发送socket给子进程后,子进程会绑定一个data事件在传来的socket上。问题来了,在子进程中,如论如何都无法出发data事件。

后经实验,情况是这样的,socket在被主进程发送给子进程之前,客户端发送来的数据就已经发送给主进程了,所以在子进程中没有数据可读,自然就如法出发data事件。

经过修改,我在主进程中读取一个请求数据,然后连socket带第一次读取的数据,一起发送给了子进程。

主进程将socket发送给子进程后,主进程中的socket好像会被自动关闭。好吧,这对我没有影响。

简短的总结:

客户端socket会一次性发送一条请求的全部数据至主进程,子进程读取socket前所有内容都已经被发送给主进程了。

在某个进程发送socket给其他进程后,在本进程内的socket会被标记为已关闭。

希望我的一点点实践可以帮到读到这篇文章的同志。

时间: 2024-11-10 00:56:20

windows下node.js进程间传递客户端socket的一些规律的相关文章

Windows 下 Node.js 入门

例子工程在此下载 Windows 下 Node.js 入门 NodeJS的历史就不说了,别人说过了.最最关键Google JavaScript V8 开发成功,运行效率很高,开放二次开发接口(C++库,功能类似常见的Lua,Python等脚本的的开放库).本来V8主要给Chrome浏览器服务的,经不住运行效率太优秀了,所以就有人动起了开发Native端的JavaScript运行环境的主意.NodeJS是这个思路的产物. 这是官网 https://nodejs.org/ 英文 https://no

windows下node.js+sublime中安装coffeescript

node.js中安装Coffeescript 1.我的node.js安装目录 2.node.js 全局模块所在目录 3.node.js安装coffeescript 1 npm install -g coffee-script 至此理论上node.js中已经安装好coffeescript编译器了,不过我第二次安装时遇到了问题,就是-w参数使用时会报错,Error:watch EINVAL 我在第一安装时,没遇到任何问题,不过那个时候,没有明确的安装步骤.当时找到的一些资料讲的并不明确.不过-c参数

Windows下Node.js+Express+WebSocket 安装配置

Node.js是一个Javascript运行环境(runtime).实际上它是对Google V8引擎进行了封装.V8引 擎执行Javascript的速度非常快,性能非常好.Node.js对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好.Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快.易于扩展的网络应用.Node.js 使用事件驱动, 非阻塞I/O模型而得以轻量和高效,非常适合在分布式设备上运行的数据密集型的

Windows下Node.js开发入门(1)

没事儿捣腾了一下Node.js,跑了个Hello World,特此记录一下. Windows 下安装 Node.js 环境 到Node官网http://nodejs.org就能够下载到安装包.我是Win7 64位,訪问Node官网,能够看到最新版本号是0.12.7,点击INSTALL就能够下载msi文件,然后双击就能够安装了. 安装过程非常easy.选中全部选项,Next就可以. msi会把npm(Node Package Manager)一并装上,还会帮你设置好环境变量,把node.npm等加

Windows下Node.js环境的搭建并结合WebStorm IDE开发环境

一.环境搭建 1.下载并安装Node.js,在Windows下的安装步骤比较简单,一直下一步就可以了.安装完成后它会在环境变量Path中配置好Node的目录.所以我们可以直接在命令行中使用Node的命令,如:node和npm,可以测试一下是否安装完成,打开命令行,输入node如何出现可以进入就表示安装完成了. 2.下载安装WebStorm现在的版本是7.0.2安装步骤也比较简单这里就不赘述了. 3.WebStorm中配置Node.js环境,在打开WebStorm后点击下图中画红框的图标进行配置.

Windows下node.js安装及环境配置

1. 安装 官网下载node.js的安装版,一路next,中间可以自定义安装路径 完成后安装目录内容如下 cmd下检查是否安装成功 新版Node.js已自带npm,所以安装Node.js时会一起安装,npm的作用就是对Node.js依赖的包进行管理,也可以理解为用来安装/卸载Node.js需要装的东西. 2. 环境变量配置 上面可以看出,node.js一路next安装之后即生效,实际上,windows的msi安装文件在过程中会直接添加path的系统变量,变量值为node.js的安装路径(D:\c

Windows下Node.js开发环境搭建-合适的开发环境

1)生产环境中的Node.js应用 Windows + Linus 2)虚拟机工具 VirtualBox 虚拟机CentOS安装 3)xShell与xFtp(windows到linux文件传输) 4)Linux安装 Node.js MogoDB Redis 5)Windows开发工具 Sublime Text WebStorm

Windows 下Node.js开发环境配置

第一步:安装VirtualBox(以管理员身份安装) 1.安装完成后,打开VirtualBox,点击“新建”按钮,输入信息,“下一步”(名称可任意) 2.设置内存为1024MB,“下一步”—>“创建”—>“下一步”—>“下一步”—>“创建”         第二步:安装CentOS(选择DVD ISO.第一个链接) 1.在VirtualBox中配置CentOS          2.点击“启动”,用上下键选择“Install CentOS”,选择语言——“English”,“Don

Windows下Node.js开发环境搭建

1.http://nodejs.org/下载node.js运行环境安装 2.打开DOS命令行 .安装express框架 1 >npm install express 末尾显示如下为安装成功 .安装mysql模块 1 npm install mysql 末尾显示如下为安装成功 3.www.jetbrains.com/webstorm/download/下载WebStorm并安装 .安装nodejs插件 File -> setting -> Plugins -> Browse resp