我的本意是在node环境中引入http、mqtt、CoAP三种协议并开启这三种服务,(在else 中开启mqtt服务及http服务毫无问题,但是开启COAP服务则会报错!)仅贴出部分代码,希望有经验的大佬给予指导。代码如下:
const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;
const mosca = require('mosca');
if (cluster.isMaster) {
console.log(`Master ${process.pid} is running`);
for (let i = 0; i < numCPUs; i++) {
cluster.fork();
console.log(cluster.fork());
}
cluster.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} died`);
});
} else {
const coap = require('coap');
const coapServer = coap.createServer();
coapServer.on('request',function(req,res){
res.end('your request is : ' + req.url.split('/')[1] + '\n');
console.log('connect 1')
});
coapServer.listen(8080,function() {
console.log('coapServer is running...')
});
}
将else 中CoAP服务替换为HTTP或者MQTT或者MQTT/HTTP混用皆可,但是一旦开启CoAP就会报错,单独开启COAP也会报错,报错代码如下:
Error: write ENOTSUP
at _errnoException (util.js:1024:11)
at ChildProcess.target._send (internal/child_process.js:702:20)
at ChildProcess.<anonymous> (internal/child_process.js:532:16)
at emitTwo (events.js:131:20)
at ChildProcess.emit (events.js:214:7)
at emit (internal/child_process.js:772:12)
at _combinedTickCallback (internal/process/next_tick.js:141:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
尝试将开启CoAP服务的代码从else中摘出来(不使用集群),放在头部或者尾部 但是都会报错,放在头部时CoAP服务可以正常开启,但是运行到else语句时就报错了。
<p><a target="_blank" rel="nofollow">@vikon</a> 大神可以帮我看看吗? 不胜感激</p>
回复 <a class="referer" target="_blank">@vikon</a> : 好吧 我习惯性的丢百度了,看来还是要换换搜索引擎 多谢啦
回复 <a class="referer" target="_blank">@Leeeacon</a> : 直接把错误一些字复制到google里面,这里是 nodejs cluster write ENOTSUP
回复 <a class="referer" target="_blank">@vikon</a> : 非常感谢您的指教,能问下您是怎么查出来windows下node不支持udp端口共享吗?我遇到这种问题总是感觉无从下手啊,以后再遇到可能还是不知道怎么解决,
回复 <a class="referer" target="_blank">@vikon</a> : coap是使用的UDP。。那么意味着。。我需要尝试使用Linux系统下安装node来运行试试看了
见笑了,我没用过那个Coap, 查了一下似乎是说,window下面的nodejs不支持共享udp端口。 所以会在worker里面创建的时候会报那个错。先看是否coap是否用的udp,而且是在window环境的。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。