【发布时间】:2022-08-24 12:43:48
【问题描述】:
我有一个简单的客户端脚本,如下所示:
function connect() {
const { contextBridge } = require(\'electron\');
var ws = new WebSocket(\'ws://localhost:3000\');
ws.onerror = (error) => {
console.error(`Lost connection to server. Reason: ${error.message}`);
console.error(\'Attempting to reconnect...\');
ws.close();
}
ws.onclose = (e) => {
setTimeout({
connect();
}, 500);
}
ws.addEventListener(\'open\', () => {
console.log(\'Connected to server!\');
});
// Some other stuff to call functions via the browser console
const API = {
ws_isOpen: () => { return ws.readyState === ws.OPEN }
}
contextBridge.exposeInMainWorld(\'api\', API);
function send_msg(msg) {
// Process some data...
ws.send(msg);
}
}
connect();
当服务器在连接时正在运行时,它在第一次连接时服务器正在重新启动时正常工作,但在它\'s连接的.我的意思是,如果我在客户端连接到服务器时突然关闭服务器,它会尝试像往常一样尝试重新连接,并且会弹出成功消息。但是,如果我在浏览器控制台中输入window.api.ws_isOpen(),它会返回false。当我尝试发送消息时,会弹出一条错误消息,如Websocket is already in CLOSING or CLOSED stage。我尝试将ws 变量类型更改为let 和const,但它不起作用。
标签: javascript html sockets websocket electron