我很确定这是一个简单的问题,但我不知道socket.io文档在哪里,而http://labs.learnboost.com/socket.io/的文档并没有真正帮助。
因此,假设我有一个socket.io http服务器,并编写了一个网站来连接它。
如何为服务器提供保护,以防止未经授权的人(不通过网站连接的人)被阻止/删除/禁止。
如何在服务器端结束套接字连接?所以,如果我有
io.sockets.on('connection', function (socket) {
socket.on('end', function() {
var i = global_sockets_list.indexOf(socket);
global_sockets_list.splice(i, 1);
});
socket.emit('end'); // Doesn't work, just sends data
socket.end(); //error
});
如何结束套接字连接? (上面的连接然后断开连接用于测试)
答案 0 :(得分:18)
尝试致电:
socket.disconnect('unauthorized');
或
socket.close();
编辑:您可以检查referer标头。查看Socket.io Security Issues了解更多信息。
答案 1 :(得分:10)
在服务器端,有一个socket.disconnect方法,它采用布尔意义关闭底层传输连接。这是截至2010年7月的docs源代码:
/**
* Disconnects this client.
*
* @param {Boolean} if `true`, closes the underlying connection
* @return {Socket} self
* @api public
*/
Socket.prototype.disconnect = function(close){
if (!this.connected) return this;
if (close) {
this.client.disconnect();
} else {
this.packet({ type: parser.DISCONNECT });
this.onclose('server namespace disconnect');
}
return this;
};
所以你应该致电socket.disconnect(true);