Клиент Websocket в приложении Electron откладывает прием - PullRequest
0 голосов
/ 15 сентября 2018

Я использую веб-сокет для передачи данных из процесса (работающего в фоновом режиме) в мое электронное приложение (средство визуализации, это электронное приложение).В основном это прекрасно работает, данные принимаются и отображаются мгновенно.

Однако в некоторых случаях я заметил, что клиент веб-сокета, похоже, буферизировал входящие сообщения и запускал событие receive только после некоторой задержки, что приводило к сообщениям.получено как пакет.

Чтобы убедиться, что сервер ничего не буферизует, я запустил второе соединение и просто зарегистрировал данные (chrome-addon), там все данные получены и обработаны мгновенно, пока мое электронное приложениезадерживает сообщения.

Я использую ReconnectingWebsocket, но также попробовал простое приложение веб-сокета:

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: отображается только с некоторой задержкой.Есть ли какая-либо опция конфигурации, например буферизация на стороне клиента, или процесс рендеринга должен вызываться чаще ..?

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Оказывается, что это была не реализация веб-сокета, а электрон, полностью блокирующий процесс рендеринга во время прокрутки, таким образом, отсроченный прием. Мне пришлось переместить соединение websocket из рендерера и туннелировать все сообщения, используя систему IPC.

0 голосов
/ 16 сентября 2018

Не уверен в решении, но у нас есть демонстрационное приложение, использующее Vue + Electron на https://github.com/firesharkstudios/butterfly-server-dotnet/tree/master/Butterfly.Example.Todo, которое также использует WebSockets.Я никогда не видел задержки или буферизации, как вы видите.Может быть, вы можете сравнить реализации, чтобы найти причину.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...