2014-02-06 48 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

相關問題