Blazor Server # di connessioni per utilizzo è limitato dal browser
Sono in procinto di creare un'applicazione database Blazor lato server.
Uno dei miei requisiti è che l'utente possa aprire ogni pagina del sito Web in una scheda diversa.
Ho scoperto che dopo l'apertura di 5 schede, il rendering di tutte le nuove pagine viene bloccato. Se chiudo una pagina, è possibile eseguire il rendering della sesta pagina. Apparentemente ciò è dovuto al fatto che i browser possono supportare un numero limitato di connessioni SignalR contemporaneamente. Ho letto che il limite per Chrome è 6 alla volta (anche se posso farlo funzionare solo 5).
Messaggi di errore in Chrome:
Error: Connection disconnected with error 'Error: Server returned handshake error: Handshake was canceled.'
Error: Error: Server returned handshake error: Handshake was canceled.
Uncaught (in promise) Error: Cannot send data if the connection is not in the 'Connected' State.
at e.send (blazor.server.js:1)
c'è una soluzione per questo problema? O devo esplorare il porting sul client Blazor?
Ho trovato il seguente articolo su questo argomento ma non sono sicuro che possa essere applicato a un'applicazione Blazor : SignalR e limite di connessione del browser
È un po 'spaventoso perché ho già creato un bel po' di codice e non voglio perdere troppo tempo cercando di hackerare una soluzione alternativa.
Risposte
Finalmente sono riuscito a replicarlo sulla mia rete interna, sembra essere stato risolto ora che ho installato WebSocket.
- Apri Server Manager
- Apri Aggiungi ruoli e funzionalità
- Espandi WebServer (IIS)
- Espandere lo sviluppo di applicazioni
- Seleziona WebSocket Protocol
Dopo aver installato questo, ho aperto 20 schede della mia applicazione server blazer, ognuna su una pagina diversa e il problema non si è ripresentato (ho anche fatto un paio di aggiornamenti su ciascuna per essere sicuro).
Mi sono imbattuto in questo dopo aver letto
Blazor funziona meglio quando si usano WebSocket come trasporto SignalR a causa della minore latenza, affidabilità e sicurezza. Il polling lungo viene usato da SignalR quando WebSocket non è disponibile o quando l'app è configurata in modo esplicito per l'uso del polling lungo.
Dai documenti di Blazor .