关闭上一个套接字实例javascript

关闭上一个套接字实例javascript,javascript,sockets,websocket,Javascript,Sockets,Websocket,希望你们都做得很好。我正在尝试创建一个聊天收件箱,就像instagram一样,我遇到了一个问题,设计必须类似于在屏幕左侧显示线程,当单击特定线程时,屏幕截图中可以看到相应的聊天框出现在右侧 这种方法的问题是,在客户端,我创建了一个函数,每当单击线程时,通过promise对象调用数据,加载数据,操纵浏览器历史记录,启动套接字,这就是javascript的样子 inbox.html 这一部分出现了问题,每当用户第二次单击线程时,它也会为另一个用户启动一个套接字对象,同时打开两个WebSocket,

希望你们都做得很好。我正在尝试创建一个聊天收件箱,就像instagram一样,我遇到了一个问题,设计必须类似于在屏幕左侧显示线程,当单击特定线程时,屏幕截图中可以看到相应的聊天框出现在右侧

这种方法的问题是,在客户端,我创建了一个函数,每当单击线程时,通过promise对象调用数据,加载数据,操纵浏览器历史记录,启动套接字,这就是javascript的样子

inbox.html 这一部分出现了问题,每当用户第二次单击线程时,它也会为另一个用户启动一个套接字对象,同时打开两个WebSocket,当消息通过submit按钮发送到服务器时,两个套接字都会发送消息,打算发送消息的连接将发送消息,但另一个未关闭的连接将向服务器发送空字符串,从而损坏数据库。
非常感谢您提供的任何帮助。

如果插座已打开,请将其关闭

if (socket.readyState === WebSocket.OPEN) {
    socket.close()
} 

然后连接到新的套接字。

已经这样做了,它仍然没有关闭websocket,还尝试将套接字存储在一个数组中并弹出第一个对象,但仍然无法工作,特别是该套接字。close()函数不起作用每次执行click\u线程函数时,您都在创建一个新的套接字。您应该将上一个套接字传递到该函数中,检查它是否打开,如果打开,请在创建新的套接字之前将其关闭。
if (socket.readyState === WebSocket.OPEN) {
    socket.close()
}