gpt4 book ai didi

node.js - NodeJS v.0.10.X 不向后兼容 v0.8.X 的多播

转载 作者:太空宇宙 更新时间:2023-11-04 02:40:41 25 4
gpt4 key购买 nike

NodeJS v.0.10.X 不向后兼容 v0.8.X 的多播。

bind 似乎已从同步更改为异步。

我目前正在用一种可怕的方法来解决这个问题:

https://github.com/chrisdew/multicast-eventemitter/blob/master/lib/multicast-eventemitter.js#L87

我使用 API 的方式是否有错误,或者向后兼容性是否已损坏?

如果我将 v0.10.X 代码与 NodeJS v0.8.X 一起使用,我不会收到任何消息(我假设对“bind”的调用在这里是同步的,并且不会调用提供的函数。

如果我将 v0.8.X 代码与 NodeJS v0.10.X 一起使用,则会收到错误:

dgram.js:354
throw errnoException(process._errno, 'setMulticastTTL');
^
Error: setMulticastTTL EBADF
at errnoException (dgram.js:439:11)
at Socket.setMulticastTTL (dgram.js:354:11)
at MulticastEventEmitter.addListener (/home/chris/Dropbox/multicast-eventemitter/lib/multicast-eventemitter.js:96:14)
at Object.<anonymous> (/home/chris/Dropbox/multicast-eventemitter/examples/loopback.js:17:9)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)

有人能找到一种方法来消除这种可怕的软糖吗?

最佳答案

是的,它不再同步。您可以查看docs也是。

Important note: the behavior of dgram.Socket#bind() has changed in v0.10 and is always asynchronous now.

如果您的代码如下所示:

var s = dgram.createSocket('udp4');
s.bind(1234);
s.addMembership('224.0.0.114');

你必须将其更改为:

var s = dgram.createSocket('udp4');
s.bind(1234, function() {
s.addMembership('224.0.0.114');
});

情况会是这样,因此您必须更改代码。

关于node.js - NodeJS v.0.10.X 不向后兼容 v0.8.X 的多播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16484248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com