开发者社区> 问答> 正文

node 环境中引入cluster模块,子进程中引入CoAP开启CoAP服务出错?报错

我的本意是在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语句时就报错了。

展开
收起
爱吃鱼的程序员 2020-06-07 16:53:49 854 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
                        <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环境的。
    
    2020-06-07 16:54:02
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
探究 Node.js 的服务端之路 立即下载
个推微服务实践 基于OpenResty 和Node.js 立即下载
沪江基于Node.js大规模应用实践 立即下载