我昨天研究了 sockets、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
方法。
我以为sails onConnect
等同于socket.io io.on(connection)
。那么sails的onDisconnect
方法就相当于socket.on('disconnect')
,在io.on(connection)
里面,就是就像一条捷径,以正确的方式处理这个特定事件并遵守其标准(方法以 on
开头)。
但是我已经将我的代码展示给一个已经使用过 socket.io 和 sails 的 friend ,他告诉我我错了,我正在做的是在另一个监听器中定义一个监听器,这会导致困惑困惑(至少)。
我想知道我是否误解了如何设置 sails 套接字。
如果我错了,我会哭,但我会克服的。
最佳答案
我的第一印象其实是对的,所以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');
});
});
关于javascript - Sails.js - 如何设置 sails 套接字配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26939295/