2011-07-12 28 views
1

編寫Node.js代碼的一般規則是所有的代碼都應該是非阻塞的並且通過事件進行通信。我想知道是否使用Node.js的Socket.IO庫編寫的代碼創建阻塞的連接,還是遵循一般的Node.js規則?這個Socket.IO代碼是否創建一個阻塞連接?

sio.sockets.on('connection', function (socket) { 
    socket.on('message', function (msg) { 
    console.log("Received message"+message); 
    }); 

    socket.on('cookie', function (msg) { 
    console.log("Cookie Received"); 
    console.log(msg); 
    }); 

    this.send('hello'); 


    socket.on('disconnect', function(){ 
    console.log('Disconnected'); 
    }); 
}); 

將不勝感激的任何幫助。

+0

它設置了一個服務器,就像http.createServer(function) – generalhenry

+1

當編碼javascript時,你不能做任何阻塞(你可以,但只是stupid => while(true);)。但是當你創建c擴展時,你可以編寫不好的阻止代碼! – Alfred

回答

3

沒有,Node.js的socket.io服務器與標準的節點無阻塞API

也就是說監聽TCP,您的控制立即轉到下一條語句sio.sockets.on(..);之後,唯一在此調用發生的是「構建的javascript函數對象abd分配給偵聽器數組'。