2012-02-12 18 views
33

C'è qualche vantaggio di avere due connessioni Websocket distinte allo stesso server dallo stesso client? Per me questa sembra una cattiva scelta di design, ma c'è qualche ragione per cui/dove dovrebbe funzionare meglio?Connessioni multiple con socket Web

+0

Anche il REQUEST_URI è lo stesso? –

+0

@Shiplu Hmm. Uno non dovrebbe trasmettere informazioni via uri poiché è fatto solo una volta. In questo caso, diciamo ** sì **. – Christian

+4

Può l'elettore chiudere per favore spiegare perché? ** Perché esattamente la mia domanda non è costruttiva? ** – Christian

risposta

56

Ci sono diversi motivi per cui si potrebbe desiderare di farlo, ma probabilmente non sono troppo comuni (almeno non ancora):

  • Hai sia cifrato ed i dati in chiaro che si sta inviando/ricezione (ad es. alcuni dati sono voluminosi ma non sensibili).
  • Si dispone di dati di streaming e dati sensibili alla latenza: immagina un gioco interattivo che occasionalmente trasmette video in streaming all'interno del gioco. Non si desidera che i flussi multimediali di grandi dimensioni ritardino la ricezione di messaggi di giochi normali sensibili alla latenza.
  • Si dispone di entrambi i messaggi testuali (ad esempio messaggi di controllo JSON) e dati binari (array o blob digitati) e non si vuole preoccupare di aggiungere il proprio livello di protocollo per distinguere poiché WebSockets lo fa già per te.
  • Sono disponibili più protocolli secondari WebSocket (l'impostazione facoltativa dopo l'URI) supportati e la pagina desidera accedere a più di una (ciascuna connessione WebSocket è limitata a un singolo sottoprotocollo).
  • Sono disponibili diversi servizi WebSocket dietro lo stesso server Web e porta. Il modo in cui il client sceglie per connessione può dipendere dal percorso URI, dallo schema URI (ws o wss), dal sottoprotocollo o forse anche dal primo messaggio da client a server.

Sono sicuro che ci sono altri motivi, ma questo è tutto quello che posso pensare in cima alla mia testa.

+0

+1 Molto informativo! – Jonas

0

Attualmente sto cercando una soluzione per avere due connessioni allo stesso websocket. La mia ragione:

  • ho scritto un banco di prova in QUnit e voglio simulare più client e controllare i diversi clienti per le risposte corrette
0

ho scoperto che si può fare la logica client molto più semplice quando si si stanno iscrivendo solo agli aggiornamenti di determinati oggetti gestiti dal server. Invece di ideare un protocollo di abbonamento personalizzato per un singolo canale, puoi semplicemente aprire un socket per ciascun elemento.

Diciamo che si è ottenuto un insieme di elementi tramite un API REST a

http://myserver/api/some-elements 

Si potrebbe sottoscrivere gli aggiornamenti di un singolo elemento utilizzando un URL presa come questo:

ws://myserver/api/some-elements/42/updates 

Naturalmente uno può sostenere che questo non è in scala per le pagine complesse. Tuttavia, per piccole e semplici appicazioni, potrebbe rendere la tua vita molto più semplice.

Problemi correlati