2012-10-12 6 views
7

Immagina di voler creare un gioco multiplayer in tempo reale, con HTML5 (client) e node.js (server).WebRTC quello giusto? (gioco multiplayer in tempo reale)

Ho bisogno di trasportare i dati molto velocemente dal server ai client e viceversa.

In un'applicazione nativa vorrei usare UDP per la maggior parte dei dati (posizione del giocatore, ...), perché è molto più veloce di TCP ed è acritico quando viene perso.

In HTML5 Posso (solo) utilizzare WebSockets. WebSockets è in cima al TCP e quindi non abbastanza veloce per una buona prestazione.

Ho sentito parlare di WebRTC, ma non so se questa potrebbe essere la soluzione per questo problema.

Qualcuno ha esperienza con esso?

(lo so, che WebRTC è ancora supportato per la maggior browser, ma questo non importa a me.)

+0

Sei sicuro che i web socket siano troppo lenti per il tuo caso d'uso? Un socket tcp viene tenuto aperto per tutta la durata della sessione websocket in modo da non doversi preoccupare del sovraccarico della connessione per ciascun messaggio. – simonc

+0

TCP: consegna affidabile di messaggi; tutti i dati vengono confermati La consegna di tutti i dati viene gestita e i dati persi vengono ritrasmessi automaticamente. UDP: inaffidabile, consegna best-effort senza conferme Quindi il TCP è semplicemente la tecnica sbagliata per questo caso d'uso. – appsthatmatter

+1

Provate a implementarlo usando WebSockets e misurate per vedere se è davvero troppo lento (inutile dirlo, estrapola l'implementazione del trasporto in modo che se WebSockets risultasse insoddisfacente, potete usare qualcos'altro senza dover scartare un sacco di codice). In questo momento stai ottimizzando prematuramente. – ebohlman

risposta

2

In termini di WebRTC, suona come quello che vi serve è DataChannel: vedi draft protocol e HTML5 Rocks article (disclaimer:! l'ho scritto)

DataChannel è un work in progress, non ancora implementata da qualsiasi browser.

Come per altri componenti WebRTC, MediaStream (getUserMedia) è supportato da Chrome, Firefox Nightlies e Opera; RTCPeerConnection è in Chrome stabile, dietro un flag (flagless nelle prossime versioni) e promesso per Firefox 18 nel primo trimestre 2013.

MODIFICA: RTCDataChannel è ora implementato su Firefox e Chrome.

Demo "singola pagina" di Chrome: simpl.info/dc, Firefox demo.

+0

Per quanto riguarda gli ultimi annunci pubblicati, vedo che MediaStream e PeerConnection procedono velocemente. Come sta andando DataChannel? Anche il tuo articolo parla di DataChannel per la comunicazione da browser a browser. Funziona anche con browser-to-server, giusto? – Cystack

+1

Grazie per avermelo fatto notare - non l'ho guardato per un po ': aggiunto EDIT. Su un server, è possibile utilizzare le API C++ WebRTC. –

1

RTCDataChannel fornisce un trasporto basato su sessione/affidabile e senza connessione/inaffidabile, analogo a TCP e UDP in un client nativo, rispettivamente. Maggiori informazioni here. A partire dal 2013, questa è una tecnologia valida, anche se solo nelle versioni successive di Chrome e Firefox.

According to html5rocks.com, ora è anche possibile utilizzare i tipi binari per il trasferimento. Quindi dovresti avere tutte le funzionalità che avresti con un client UDP nativo efficiente. Tuttavia, io sono ancora incerto se il trasferimento binario ha fatto la sua strada dal repository WebRTC, where it has been fixed, tutto il modo in Chrome, o se è ancora disponibile solo in Chrome Canary in questa fase.

Problemi correlati