有没有办法断开客户端与SocketIO,并确实关闭连接?因此,如果有人连接到我的服务器,并且我想关闭它们与我的服务器之间的连接,我将如何进行此操作?
小智 16
socket.disconnect() 只能在客户端使用,而不能在服务器端使用.
Client.emit('disconnect')触发服务器上的断开事件,但不能有效断开客户端.客户端不知道断开连接.
所以问题仍然存在:如何强制客户端断开与服务器端的连接?
小智 8
您无法让服务器向客户端发出消息使其调用断开连接功能的任何原因?
在客户端:
socket.emit('forceDisconnect');
Run Code Online (Sandbox Code Playgroud)
在服务器上:
socket.on('forceDisconnect', function(){
socket.disconnect();
});
Run Code Online (Sandbox Code Playgroud)
今天早上检查它似乎现在是:
socket.close()
Run Code Online (Sandbox Code Playgroud)
https://socket.io/docs/client-api/#socket-close
对于那些在谷歌上找到这个的人 - 现在有一个解决方案:
Socket.disconnect()踢客户端(服务器端)。客户没有机会保持联系:)
这对我不起作用:
`socket.disconnect()`
Run Code Online (Sandbox Code Playgroud)
这对我有用:
socket.disconnect(true)
Run Code Online (Sandbox Code Playgroud)
移交true将关闭与客户端的底层连接,而不仅仅是客户端连接到Socket IO 文档的命名空间。
示例用例:客户端使用无效的访问令牌连接到 Web 套接字服务器(访问令牌通过连接参数移交给 Web 套接字服务器)。Web 套接字服务器通知客户端它将关闭连接,因为他的访问令牌无效:
// (1) the server code emits
socket.emit('invalidAccessToken', function(data) {
console.log(data); // (4) server receives 'invalidAccessTokenEmitReceived' from client
socket.disconnect(true); // (5) force disconnect client
});
// (2) the client code listens to event
// client.on('invalidAccessToken', (name, fn) => {
// // (3) the client ack emits to server
// fn('invalidAccessTokenEmitReceived');
// });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
116099 次 |
| 最近记录: |