node.js - Socket.io - 关闭服务器

标签 node.js socket.io

我的应用中有一个 socket.io 服务器,监听端口 5759。

在我的代码中的某个时刻,我需要关闭服务器所以它不再在听了

我怎样才能做到这一点?

Socket.io 没有监听 http 服务器。

最佳答案

你有一个服务器:

var io = require('socket.io').listen(8000);
io.sockets.on('connection', function(socket) {
    socket.emit('socket_is_connected','You are connected!');
});

停止接收传入连接

io.server.close();

注意:这不会关闭现有连接,它们会在关闭之前等待超时。要立即关闭它们,首先列出已连接的套接字

var socketlist = [];
io.sockets.on('connection', function(socket) {
    socketlist.push(socket);
    socket.emit('socket_is_connected','You are connected!');
    socket.on('close', function () {
      console.log('socket closed');
      socketlist.splice(socketlist.indexOf(socket), 1);
    });
});

然后关闭所有现有的连接

socketlist.forEach(function(socket) {
  socket.destroy();
});

从这里获取逻辑:How do I shutdown a Node.js http(s) server immediately?

关于node.js - Socket.io - 关闭服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16000120/

相关文章:

javascript - 如何将 console.log 写入文件

api - 使用 Node JS 代理 http 并修改响应

node.js - 一个文件监视所有 socket.io 连接

python - flask_socketio已连接到客户端,但未接收消息

linux - linux 中的 ip_rcv 函数在哪里?

javascript - 使用 NODE.JS 解析 JSON url 并使用 SOCKET.IO 保持最新状态

javascript - 如何在 Socket.io/express-sessions 中访问/保存授权事件的 session 数据?

javascript - 使用 SSO 在两个 Node 应用程序之间共享 session

Node.js + Redis 内存泄漏。难道我做错了什么?

node.js - 为什么我的应用程序在端口 80 而不是端口 3000 上监听,因为我将它设置为在 docker 容器中运行?