NodeJS v.0.10.X不能向後兼容v0.8.X的多播。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.XI沒有收到任何消息(我假設'bind'的調用在這裏是同步的,並且沒有調用提供的函數。
如果我用的NodeJS v0.10.XI的v0.8.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)
任何人都可以看到的方式來消除這種可怕的軟糖
我也提交了這個bug:https://github.com/joyent/node/issues/5446 – fadedbee 2013-05-10 14:12:01