如何在windows上运行Node Cluster
How to run Node Cluster on windows?
有人知道如何在windows上运行Node Cluster吗?我在网上找不到任何文章,似乎无法解决这个问题:
events.js:160
throw er; // Unhandled 'error' event
^
Error: write ENOTSUP
at exports._errnoException (util.js:1007:11)
at ChildProcess.target._send (internal/child_process.js:634:20)
at ChildProcess.target.send (internal/child_process.js:521:19)
at sendHelper (cluster.js:751:15)
at send (cluster.js:534:12)
at cluster.js:509:7
at SharedHandle.add (cluster.js:99:3)
at queryServer (cluster.js:501:12)
at Worker.onmessage (cluster.js:449:7)
at ChildProcess.<anonymous> (cluster.js:765:8)
和代码…
if (cluster.isMaster) {
for (let i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('online', (worker) => {
console.log('Worker ' + worker.process.pid + ' is online');
});
cluster.on('exit', (worker, code, signal) => {
console.log(`Worker ${worker.process.pid} died with code ${code} and signal ${signal}`);
});
} else {
console.log('else part ');
openPort();
}
function openPort() {
let server = dgram.createSocket('udp4');
server.bind(port, host);
server.on('message', processMessage);
}
在v0.11.14中添加了对UDP集群的支持(用于Linux和OSX)。检查node.js master上的文件,上面写着"dgram集群目前不支持windows"
在当前的node js版本中,我使用下面的代码在windows上创建集群。
var cluster = require('cluster');
var numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
// Fork workers.
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('exit', function(worker, code, signal) {
console.log("worker ${worker.process.pid} died");
cluster.fork();
});
} else {
var express = require('express');
var http = require('http');
// init app
var app = express();
function createServer(app) {
return http.createServer(app);
}
app.locals.server = createServer(app);
app.locals.server.listen(port, function() {
console.info("server online");
});
}
因此,为了在Windows上与Node集群使用UDP,您必须调用服务器。像这样绑定:
server.bind({port: 1900, exclusive: true}, function () {
console.log('PORT BIND SUCCESS');
server.setBroadcast(true);
server.setMulticastTTL(128);
server.addMembership(multicastAddress, myIp);
});
关键部分是将对象{port: port, exclusive: true}传递给bind函数。我在这里找到了答案:https://github.com/misterdjules/node/commit/1a87a95d3d7ccc67fd74145c6f6714186e56f571
相关文章:
- 如何在没有单词的情况下从命令行运行Node.js程序'节点'
- 从页面javascript按钮运行Node.JS
- 如何测试运行 node-fluent-ffmpeg(异步模块)的自定义模块
- 使函数按顺序运行[Node JS]
- 在 Google Compute Engine Debian 服务器上运行 Node.js
- 如何在不停止的情况下永远运行node-js
- 如何在启用ES6功能的情况下运行Node.js应用程序
- 为什么可以't我得到连接客户端's的ip地址在我的服务器上运行Node.js+Openshift托管的W
- 从任何目录运行Node.JS脚本
- 如何在Magento商店中运行Node.js应用程序
- 如何构建一个 Cakefile 来运行 node.js
- 在网站上运行node.js,但不在localhost上运行
- 如何在eclipse中运行Node.js文件
- 从package.json运行Node.js命令
- 如何在我的HTML页面中运行Node.js脚本,就像我在PHP中一样
- 运行Node.js服务器时出现问题
- 当我运行node app.js命令时,它会给我错误`ENOENT,.mime.types上没有这样的文件或目录
- 像桌面应用程序一样运行Node Webkit
- 找不到模块'glob'当运行node.js文件和selenium时
- 如何在Windows上的Emacs中交互运行node.js