2013-05-23 5 views
11

Ich versuche folgende Knoten js Anwendung auszuführen als https://github.com/joyent/node/issues/2194 erwähntKnoten js 0.10.7: Cluster-Unterstützung für udp dgram?

var util = require("util"), 
    dgram = require("dgram"), 
    cluster = require('cluster'); 

var udp = dgram.createSocket("udp4"); 
var port = 1190; 

if (cluster.isMaster) { 
    for (i = 0; i < 2; i++) { 
    cluster.fork(); 
    } 
} else { 
    util.log("starting udp server on port " + port); 
    udp.on("error", function (error) { 
    util.log("failed to bind to UDP port - " + error) 
    }); 
    udp.bind(port); 
} 

Die App verlässt sofort mit der folgenden Ausgabe:

23 May 23:22:13 - starting udp server on port 1190 
23 May 23:22:13 - starting udp server on port 1190 

events.js:72 
     throw er; // Unhandled 'error' event 
      ^
Error: write ENOTSUP - cannot write to IPC channel. 
    at errnoException (child_process.js:980:11) 
    at ChildProcess.target.send (child_process.js:455:16) 
    at Worker.send (cluster.js:401:21) 
    at sendInternalMessage (cluster.js:394:10) 
    at handleResponse (cluster.js:177:5) 
    at respond (cluster.js:192:5) 
    at Object.messageHandler.queryServer (cluster.js:242:5) 
    at handleMessage (cluster.js:197:32) 
    at ChildProcess.EventEmitter.emit (events.js:117:20) 
    at handleMessage (child_process.js:318:10) 

Wer weiß, was los ist? Wenn dies ohne Cluster ausgeführt wird, ist alles in Ordnung. Es scheint, dass Cluster UDP nicht unterstützt?

Einige Spezifikationen:

Window 7 x64 
node js 0.10.7 
+0

Ich lief in einem genau das gleiche Problem (war ein 'socket.send (...)' auf einem Udp-Socket tun), funktioniert gut ohne die Cluster-Umgebung. Hast du etwas Neues zu diesem Thema? – zaphod1984

+0

scheint es, dass es gut auf Linux funktioniert, aber nicht auf Windows. – zaphod1984

+0

https://gist.github.com/zaphod1984/5668274 – zaphod1984

Antwort

1

Es heißt in dem Link, um Ihre zur Verfügung gestellt, die für UDP-Clustering unterstützt wurde in v0.11.14 hinzugefügt. Es ist wahrscheinlich, dass Sie einfach Ihre Version von node.js aktualisieren müssen