昨天我研究过socket,socket.io和sails,我不得不说我很丢失。我以前从未使用过它们。我以为我明白了,但我不确定了。
我的工作基于http://socket.io/get-started/chat/。我正在使用框架Sails.js,它添加了自己的方法来处理套接字等等。
在config/sockets.js
我们有onConnect
和onDisconnect
方法。请参阅https://github.com/balderdashy/sails-docs/blob/master/reference/sails.config/sails.config.sockets.md和(源代码)https://gist.github.com/Vadorequest/568afc14294f1448ab55
我将比较sails和socket.io,让我们来看看这段代码:
io.on('connection', function(socket){
console.log('a user connected');
socket.on('disconnect', function(){
console.log('user disconnected');
});
});
当socket.io打开(连接)时,它使用listeners
方法从客户端或服务器定义等待发送请求的socket.on('disconnect')
socket.emit
{/ 1}}。 p>
我认为风帆onConnect
等同于socket.io io.on(connection)
。然后风帆onDisconnect
方法相当于socket.on('disconnect')
,在io.on(connection)
内,它就像一个快捷方式,以适当的方式处理此特定事件并尊重其标准(方法以{开头) {1}})。
但是我已经向一位已经使用过socket.io和sails的朋友展示了我的代码,他告诉我我错了,我正在做的是在另一个监听器中定义一个监听器,这将导致一个混乱混乱(至少)。
我想知道我是否误解了如何设置风帆套接字。
如果我错了,我会哭,但我会克服它。
答案 0 :(得分:3)
我的第一印象实际上是正确的,所以Sails为我们隐藏socket.io
逻辑,这两个代码是等价的,第一个使用socket.io
,第二个使用Sails 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');
}
}
同样,Sails onConnect
方法等同于
io.on('connection', function(socket){
socket.on('connect', function() {
console.log('user connected');
});
});