javascript - SignalR - Anslutning stoppad när flera flikar öppnas - Meddelandet är ofullständigt
På frontend-delen av min applikation använder jag @microsoft/signalr-biblioteket för att skicka förfrågningar till mina backend-hubbar. Detta fungerar okej i en flik, men när en andra flik är öppen rapporteras ett fel i konsolen på den första fliken och anslutningen stoppas. Det är nästan som om den andra fliken tar över av någon anledning, när jag egentligen tror att båda borde vara anslutna till hubben med olika anslutningar och olika anslutnings-id:n. Felet jag får i konsolen är följande:
[2021-04-23T09:34:22.762Z] Information: WebSocket connected to wss://localhost:6001/ptwHub?id=39HKWle3NU0eTjFxcNWsiQ.
Utils.js:218 [2021-04-23T09:34:32.895Z] Error: Connection disconnected with error 'Error: Message is incomplete.'.
./node_modules/@microsoft/signalr/dist/esm/Utils.js.ConsoleLogger.log @ Utils.js:218
./node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.HttpConnection.stopConnection @ HttpConnection.js:542
transport.onclose @ HttpConnection.js:479
./node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.WebSocketTransport.close @ WebSocketTransport.js:189
webSocket.onmessage @ WebSocketTransport.js:129
ptw.ts:22 Error: Message is incomplete.
at Function../node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.TextMessageFormat.parse (TextMessageFormat.js:13)
at JsonHubProtocol../node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.JsonHubProtocol.parseMessages (JsonHubProtocol.js:36)
at HubConnection../node_modules/@microsoft/signalr/dist/esm/HubConnection.js.HubConnection.processIncomingData (HubConnection.js:507)
at WebSocketTransport.HubConnection.connection.onreceive (HubConnection.js:73)
at WebSocket.webSocket.onmessage (WebSocketTransport.js:126)
Koden för att ansluta till hubben är som följer:
let connection = new signalR.HubConnectionBuilder().withUrl("https://localhost:6001/hub").build();
connection.on('knowledgeBaseUpdated', (userId: number) => {
alert(`User ${userId} has updated the knowledge base. Please refresh.`);
});
connection.start().catch(err => console.log(err));
Verkligen osäker på varför den andra fliken bara skulle ta över anslutningen istället för att skapa en ny anslutning. Det finns uppenbarligen ett problem här någonstans, men jag är verkligen inte säker på var, så all hjälp skulle uppskattas mycket.
REDIGERA Jag har aktiverat klient-side felsökning för signalr och får följande utdata. Raden som börjar med HttpConnection.stopConnection är raden som visas när en ny anslutning försöks från en annan flik.
[2021-04-26T09:50:00.084Z] Debug: Starting HubConnection.
Utils.js:228 [2021-04-26T09:50:00.096Z] Debug: Starting connection with transfer format 'Text'.
Utils.js:228 [2021-04-26T09:50:00.099Z] Debug: Sending negotiation request: https://localhost:6001/ptwHub/negotiate?negotiateVersion=1.
Utils.js:228 [2021-04-26T09:50:00.365Z] Debug: Selecting transport 'WebSockets'.
Utils.js:224 [2021-04-26T09:50:00.667Z] Information: WebSocket connected to wss://localhost:6001/ptwHub?id=14d1O9-cj544_-SHeZ2fgw.
Utils.js:228 [2021-04-26T09:50:00.667Z] Debug: The HttpConnection connected successfully.
Utils.js:228 [2021-04-26T09:50:00.668Z] Debug: Sending handshake request.
Utils.js:224 [2021-04-26T09:50:00.669Z] Information: Using HubProtocol 'json'.
Utils.js:228 [2021-04-26T09:50:13.079Z] Debug: Server handshake complete.
Utils.js:228 [2021-04-26T09:50:13.081Z] Debug: HttpConnection.stopConnection(Error: Message is incomplete.) called while in state Connected.
Utils.js:218 [2021-04-26T09:50:13.081Z] Error: Connection disconnected with error 'Error: Message is incomplete.'.
./node_modules/@microsoft/signalr/dist/esm/Utils.js.ConsoleLogger.log @ Utils.js:218
./node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.HttpConnection.stopConnection @ HttpConnection.js:542
transport.onclose @ HttpConnection.js:479
./node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.WebSocketTransport.close @ WebSocketTransport.js:189
webSocket.onmessage @ WebSocketTransport.js:129
Utils.js:228 [2021-04-26T09:50:13.082Z] Debug: HubConnection.connectionClosed(Error: Message is incomplete.) called while in state Connecting.
Utils.js:228 [2021-04-26T09:50:13.083Z] Debug: Hub handshake failed with error 'Error: Message is incomplete.' during start(). Stopping HubConnection.
Utils.js:228 [2021-04-26T09:50:13.083Z] Debug: Call to HttpConnection.stop(Error: Message is incomplete.) ignored because the connection is already in the disconnected state.
Utils.js:228 [2021-04-26T09:50:13.084Z] Debug: HubConnection failed to start successfully because of error 'Error: Message is incomplete.'.
När anslutningen startar på en viss flik kan jag se att anslutningen har startat och jag får ett enda meddelande när jag tittar på Nätverksfliken i Chrome Dev Tools. När jag öppnar den andra fliken skickas ett annat meddelande till första gången som ser ut som ett felmeddelande... det innehåller märkligt nog en massa röda prickar? Jag har bifogat en bild nedan. Vänligen ignorera faktumet att det kallas ptwHub eftersom jag tidigare tog bort ptw-delen för att göra det enklare för läsarna att förstå.
