我正在创建一个使用websocket与客户端应用程序进行通信的Electron应用程序,但遇到一个问题:客户端可以通过websocket连接到服务器,但涉及到从客户端向服务器发送消息的问题, 这是行不通的。 看来服务器只是根本没有收到消息。
服务器端:
import http from "http";
import * as WebSocket from "ws";
const port = 4444;
const server = http.createServer();
const wss = new WebSocket.Server({ server });
wss.on("connection", (ws: WebSocket) => {
// this part is not working. Messages are not being received and therefor it wont sent back any response
ws.on("message", (message: string) => {
console.log("received: %s", message);
ws.send(`Hello, you sent -> ${message}`);
});
//i get this message when i connect it with the client
ws.send("Hi there, I am a WebSocket server");
});
//start our server
server.listen(port, () => {
console.log(`Data stream server started on port ${port}`);
});
到目前为止,这些是我的发现:
我在渲染器进程上安装了Websocket服务器。这个小细节背后似乎存在问题,因为如果我在主进程上放置相同的代码,那么一切都可以正常工作(但是这不可能是解决方案,我需要在渲染器进程上使用它。)
有趣的是,我总是可以连接到我的websocket,所以看来套接字是可用的,只是消息,某些情况下服务器端无法发出或接收到该消息
可以通过与另一个客户端连接到我的服务器并发送消息来解决消息问题。在连接新客户端的那一刻,很奇怪,“触发”了我之前(与另一个客户端)发送的消息,服务器也收到了该消息,然后也进行了回复。但是随后它又无法正常工作,因此我需要一个新的客户端重新连接并发送一条消息来解决所有“卡住”的客户端消息。 (希望我在这里很清楚,这有点令人困惑)
并不是说我没有共享客户端代码,但是没有必要显示,因为当我将代码放到主进程中时,或者如果我只用节点本身运行此js文件,一切都可以正常工作。唯一的问题是电子渲染器过程和Websocket通信之间的集成。
希望很快找到答案,这个社区在解决此类问题方面一直被证明非常强大! :)