我如何等待Node.js中的下一个事件?

时间:2015-02-03 01:31:13

标签: javascript node.js event-loop

我正在撰写一个非常简单的UDP客户端示例。这是代码:

var dgram = require('dgram');
var msg = new Buffer('hello');
var s = dgram.createSocket('udp4');
s.send(msg, 0, msg.length, 6000, '127.0.0.1', function(err, bytes) {
    if (err) throw err;
    console.log('UDP message sent');
});
s.on('message', function (message, remote) {
    console.log(remote.address + ':' + remote.port +' - ' + message);
});

如何让我的程序等待下一个事件,即来自服务器的回复?我尝试过使用setImmediate,但它使我的cpu达到100%,所以这似乎是一个忙碌的等待。这是代码:

function wait() {
    setImmediate(wait);
}    
wait();

1 个答案:

答案 0 :(得分:0)

使用dgram的message事件。 message有一个参数msgrinfo的回调。 msg包含您收到的实际数据包的缓冲区,rinfo包含有关发送方的信息(例如IP地址和端口)。

示例:

var dgram = require('dgram');
var msg = new Buffer('hello');
var s = dgram.createSocket('udp4');
s.send(msg, 0, msg.length, 6000, '127.0.0.1', function(err, bytes) {
    if (err) throw err;
    console.log('UDP message sent');
});

s.on('message', function (msg, rinfo) {
    console.log('Message from '+packetInfo.address+': '+msg.toString("utf8"));
});