电子应用程序中的Websocket客户端延迟接收



我正在使用websocket将数据从进程(在后台运行(推送到我的电子应用程序(渲染器,它是一个电子vue应用程序(。大多数情况下,这效果很好,数据立即被接收和显示。

但是,在某些情况下,我注意到 websocket 客户端似乎缓冲了传入的消息,并且仅在一段时间延迟后触发接收事件,从而导致消息批量接收。

为了验证服务器没有缓冲任何东西,我运行了第二个连接并简单地记录了数据(chrome-addon(,在那里所有数据都会立即接收和处理,而我的电子应用程序会延迟消息。

我正在使用ReconnectingWebsocket但也尝试了一个普通的 websocket 应用程序:

let webSocket = new WebSocket('ws://0.0.0.0:7700')
webSocket.onopen = function(openEvent) {
console.log('WebSocket OPEN: ' + JSON.stringify(openEvent, null, 4))
}
webSocket.onclose = function(closeEvent) {
console.log('WebSocket CLOSE: ' + JSON.stringify(closeEvent, null, 4))
}
webSocket.onerror = function(errorEvent) {
console.log('WebSocket ERROR: ' + JSON.stringify(errorEvent, null, 4))
}
webSocket.onmessage = function(messageEvent) {
var wsMsg = messageEvent.data
console.log('WebSocket MESSAGE: ' + wsMsg)
}

WebSocket MESSAGE:仅显示一些延迟。是否有任何配置选项,例如客户端的缓冲,或者必须更频繁地调用渲染进程..?

不确定解决方案,但我们有一个使用 Vue + Electron https://github.com/firesharkstudios/butterfly-server-dotnet/tree/master/Butterfly.Example.Todo 的演示应用程序,它也使用 WebSockets。 我从未见过像你看到的那样延迟或缓冲。 也许您可以比较实现以找到原因。

事实证明,这不是 websocket 实现,而是电子在滚动时完全阻塞了渲染器进程,因此接收延迟。我不得不将 websocket 连接移出渲染器,并使用 IPC 系统隧道传输所有消息。

最新更新