Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何/应该删除旧的websocket连接?_Node.js_Websocket - Fatal编程技术网

Node.js 如何/应该删除旧的websocket连接?

Node.js 如何/应该删除旧的websocket连接?,node.js,websocket,Node.js,Websocket,我在Node.js上使用“ws”,我不确定如何删除旧连接(旧连接是断开连接还是空闲连接,这可能是两个不同的问题)。我是否需要为这两种类型手动实现此功能 为此,首先需要在服务器端维护一个实时web套接字连接对象列表。当用户通过关闭浏览器或任何其他方式从web套接字断开连接时,您需要从列表中删除用户web套接字连接对象 服务器端代码。您可以在以下代码中引用members数组来处理此问题 io.on("connection",function(client) { client.on("join",

我在Node.js上使用“ws”,我不确定如何删除旧连接(旧连接是断开连接还是空闲连接,这可能是两个不同的问题)。我是否需要为这两种类型手动实现此功能

为此,首先需要在服务器端维护一个实时web套接字连接对象列表。当用户通过关闭浏览器或任何其他方式从web套接字断开连接时,您需要从列表中删除用户web套接字连接对象

服务器端代码。您可以在以下代码中引用members数组来处理此问题

io.on("connection",function(client)
{
  client.on("join",function(data)
  {
    members[membercount] = client;
    membername[membercount] = data;
    membercount++;
    for(var i =0 ;i <members.length;i++)
    {
      members[i].emit("message",membername);
    }
  });
  client.on("messages",function(data)
  {
    for(var i =0 ;i <members.length;i++)
    {
      if(members[i].id !== client.id)
      {
        members[i].emit("message",data);
      }
    }
  });
  client.on("disconnect",function(data)
  {
    for(var i =0;i<members.length;i++)
    {
      if(members[i].id ===  client.id )
      {
        membercount--;
        members.splice(i,1);
        membername.splice(i,1);
      }
    }
    for(var i =0 ;i <members.length;i++)
    {
      members[i].emit("message",membername);
    }
  });
});
io.on(“连接”,功能(客户端)
{
client.on(“连接”,函数(数据)
{
成员[membercount]=客户;
membername[membercount]=数据;
membercount++;

对于(var i=0;i如果客户端没有很好地断开连接怎么办?心跳失败还是什么?断开连接是否仍然被触发?谢谢!因为它是web套接字,所以您的节点js框架将侦听打开的web套接字连接。每当浏览器关闭时,它将通知断开回调方法。您必须管理断开连接通过删除关闭的实例。希望这对你有用!!!!!!!