2014-02-06 45 views
0

我有我的Node.js脚本使用socket.io。我理解当服务器回答客户端消息时它是如何工作的。 我想做的事情是,当一个函数的执行结束时,服务器自己发送消息。我不知道该怎么做,你能帮我吗?Node.js&Socket.io:从自定义函数发送消息

这里是我的代码:

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

你能做到这样的,如果你想将数据发射到所有连接的客户端:如果你想发出对个人客户则

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}); 
+0

谢谢你,这就是我所寻找的。 – user3224275

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"); 
}) 
+0

谢谢你的帮助,是的,我做到了,但我不知道要做的是:我怎么能用socket.io给我的“io.socket”块中的好客户端发送一条消息? – user3224275

+0

哦,对不起,我误解了你的问题:) 要发送消息,你应该使用'socket.broadcast.emit(“request”,“这是我的请求”)' 或 'socket.emit(“request “,”这是我的要求“) 看看这个问题,看看有什么区别 http://stackoverflow.com/questions/10342681/whats-the-difference-between-io-sockets-emit-and -broadcast –

+0

是的我知道区别,但我想把我的socket.emit放在“io.sockets.on('connection',function(socket){})”块中。我试图把我的套接字放在一个全局变量中,但是这个发射被发送到我的两个浏览器。 – user3224275

相关问题