Я разрабатываю приложение, которое использует Electron с Angular в качестве внешнего интерфейса и node / express в качестве внутреннего интерфейса. Для обновлений в реальном времени я использую подключения к веб-сокету, все остальное - JSON Api с HTTP-вызовами на том же серверном сокете.
Когда я открываю свое приложение, он устанавливает подключение к веб-сокету и может впоследствии обращаться к HTTP-вызовам, но иногда HTTPЗапросы просто остаются в состоянии ожидания, поскольку они используют тот же идентификатор соединения, что и соединение веб-сокета.
Я не могу публиковать изображения, поэтому имею только ссылку на сетевой вывод DevTools: (https://www.3dmedium.de/wp-content/uploads/2019/10/network.jpg)
соединение "websocket" с другим портом. соединение "localhost" является websocket с localhost: 8080 get_chip - это вызов http-клиента localhost: 8080 / get_chip
get_chip calls
, которые работают, являютсяте, которые тестируют AllowOrigin
... "preflight"
иногда после переподключения веб-сокета (все еще ConnectionID 0), вызовы http-клиента используют другой идентификатор и затем работают.
электрон находится в версии 4.2.2
угловой в версии 8.2.2
Служба Angular использует:
import { Injectable } from '@angular/core';
import { HttpClientModule, HttpClient } from "@angular/common/http";
.....
constructor(private http: HttpClient ) {
this.wsConn = new WebSocket('ws://localhost:8080', ['soap', 'xmpp']);
}
....
this.http.post('http://localhost:8080/get_chip', data ).toPromise().then((result) => {
console.log(result);
});
Я думаю, что это не имеет ничего общего с серверной стороной ... но это основной код инициализации:
import * as express from "express";
import * as bodyParser from 'body-parser';
import * as WebSocket from 'ws';
const app = express();
let server = app.listen(config.server.port);
const wss = new WebSocket.Server({ server });
Есть ли способ заставить Chromium /Электрон не использовать ожидающее соединение, которое используется веб-сокетами?