我尝试使用socket.io在我的网络应用和我的原生应用之间进行客户端 - 服务器通信,我使用电子运行。
本机应用程序用作服务器,并在连接开始运行后初始化连接,如下所示:
// web-server.js
const httpServer = require('http').createServer();
const io = require('socket.io')(httpServer, { serveClient: false });
module.exports = {
init() {
httpServer.listen(19802);
io.on('connect', socket => {
// Logic
});
}
}
在客户端(网络应用)我正在执行以下操作:
// web-client.js
import io from 'socket.io-client';
const socket = io('http://localhost:19802');
export default socket;
然后我在其他模块中使用套接字来发送和接收事件。这就是全部。
问题是,当我在没有运行Web应用程序的情况下运行原生电子应用程序时,我获得了多个套接字连接(' connect'处理程序多次运行,以及io.sockets .sockets对象包含许多套接字(连接的)。
我不知道连接来自哪里,因为我甚至不运行我的网络应用程序(我也确保我的网络应用程序服务器已关闭)
你能帮我理解我做错了什么,怎么能在没有我的客户端运行的情况下获得多个独特的套接字连接? 我应该在每个原生应用程序运行之前以某种方式关闭我的连接吗?
另一件事是,当我运行我的网络应用并且它连接了原生应用服务器时,关闭浏览器标签后我就不会收到“已断开连接”的消息。服务器上的事件。我假设socket.io知道自己关闭连接,而不需要像window.beforeunload那样捕获事件并自己断开套接字。 它可能与我上面描述的问题有关,也许套接字在没有关闭的情况下保持连接?