2014-11-14 39 views
3

我昨天學過套接字,socket.io和風帆,不得不說我很迷茫。我以前從未使用過它們。我想我明白了,但我不確定了。Sails.js - 如何設置sails套接字配置?

我的工作基於http://socket.io/get-started/chat/。我正在使用框架Sails.js,它添加​​了自己的方法來處理套接字等等。我們有一個onConnectonDisconnect方法。見https://github.com/balderdashy/sails-docs/blob/master/reference/sails.config/sails.config.sockets.md和(源代碼)https://gist.github.com/Vadorequest/568afc14294f1448ab55

我會比較帆和socket.io,讓我們這樣的代碼:當socket.io是開放

io.on('connection', function(socket){ 
    console.log('a user connected'); 
    socket.on('disconnect', function(){ 
    console.log('user disconnected'); 
    }); 
}); 

(連接),它定義listenerssocket.on('disconnect')這是等待從客戶端或服務器使用socket.emit方法的emmited請求。

我想到的是,風帆onConnect等同於socket.io io.on(connection)。然後帆onDisconnect方法相當於socket.on('disconnect'),在io.on(connection)裏面,它就像是一個快捷方式,適用於處理這個特定事件並遵守其標準的方法(由on開始的方法)。

但我已經將我的代碼展示給已經使用socket.io和sails的朋友,他告訴我我錯了,我正在做的是在另一個偵聽器中定義一個偵聽器,這會導致凌亂的混亂(至少)。

我想知道我是否誤解了如何設置sails套接字。

如果我錯了,我會哭,但我會克服它。

回答

3

我的第一印象竟是對的,所以帆隱藏socket.io邏輯對我們來說,這兩個代碼是等效的,第一個使用socket.io和第二使用帆config/sockets.js方式:

// Socket.io way 
io.on('connection', function(socket){ 
    socket.on('disconnect', function(){ 
    console.log('user disconnected'); 
    }); 
}); 

// Sails way (config/sockets.js), hide the socket.io logic. (Facade design pattern) 
module.exports.sockets = { 
    onDisconnect: function(session, socket) { 
    console.log('user disconnected'); 
    } 
} 

用同樣的方法,方法相當於

io.on('connection', function(socket){ 
    socket.on('connect', function() { 
     console.log('user connected'); 
    }); 
});