我有使用socket.io的Node.js脚本。我理解当服务器应答客户端消息时它是如何工作的。 我想要做的是,当一个函数的执行结束时,服务器自己发送消息。我不知道怎么办,你能帮助我吗?
这是我的代码:
function myfunction(){
// instructions
setTimeout(function(){
otherfunction(function(ans){
/*
I want to send a message via socket.io over here
*/
});
myfunction();
}, 30000);
}
var server=https.createServer(options, function (req, res) {
// instructions
}.listen(443);
var io=require('socket.io').listen(server, {log:false});
io.sockets.on('connection', function(socket){
socket.on('request', function(msg){
// instructions
});
});
如果你可以帮我这样做,那将是非常好的。 谢谢你的帮助。
答案 0 :(得分:0)
由于nodeJS是基于事件的,因此不能像普通JS那样以正常方式执行此操作。 要做的就是使用回调函数,该函数在函数结束时执行。
基本上你将函数作为参数传递,然后在myFunction上运行该函数。
看到这个小提琴 - http://jsfiddle.net/Fizk/NR2c8/
// Declaring myfunction
function myFunction(arg1, callback){
console.log(arg1)
callback();
}
// Calling myFunction with a callback
myFunction("This is a message",function(){
console.log("This is a callback");
})
答案 1 :(得分:0)
如果要将数据发送到所有连接的客户端,可以这样做:
function myfunction(){
setTimeout(function(){
otherfunction(function(ans){
io.sockets.emit('event name', {data: yourData});
});
myfunction();
}, 30000);
}
如果您要向个别客户发光,请使用此:
io.sockets.socket(socketid).emit('event name', {data: yourData});