Как исправить отложенные запросы XHR, сделанные после открытия веб-сокета? - PullRequest
0 голосов
/ 04 октября 2019

Я разрабатываю приложение, которое использует 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 /Электрон не использовать ожидающее соединение, которое используется веб-сокетами?

...