2010-11-09 13 views
8

WebSockets? Recentemente ho incontrato websocket e ho ascoltato alcune cose positive ma ho trovato che html5 non è realmente disponibile in questo momento, quindi varrebbe la pena di passare alla scrittura di un MMO basato su browser in websocket e di far aggiornare i giocatori/scaricare ciò di cui hanno bisogno o usare la cometa e se il browser di qualcuno supporta le web socket; gestirlo in quel modo? qualche idea?WebSockets? È nuovo iniziare a utilizzare MMO basato su browser basato su JavaScript

risposta

9

Risposta: Non è troppo nuovo ed è possibile utilizzarlo ora su quasi tutti i browser.

WebKit ha avuto il supporto WebSockets per un bel po '(in pratica chiunque usando Safari o Chrome ha). A partire da iOS 4.2 I WebSocket sono stati attivati ​​(Apple lo aveva disattivato nelle versioni precedenti). Opera 11.0 ce l'avrà (10.7 ora 11.0). Firefox 4.0 ha incluso ma disabilitato per impostazione predefinita (abilitato in about: config). Firefox 5.0 o 6.0 sarà probabilmente attivato per impostazione predefinita.

Per altri browser è possibile utilizzare web-socket-js che è un fallback basato su Flash. Funziona bene ed è facile fare il fallback automatico. È più lento di WebSocket nativi, ma ha ancora una latenza molto più bassa di AJAX/COMET.

Se Javascript è un'opzione valida per il back-end, è possibile prendere in considerazione l'utilizzo di Node e la libreria Socket.IO per il nodo. Socket.IO è principalmente una libreria lato server che supporta WebSockets (incorpora il web-socket-js falback) e vari metodi AJAX/COMET/long-poll. Il lato client di Socket.IO consente di utilizzare la stessa API sul lato server (è molto simile alla normale API WebSockets) e rileva e seleziona il trasporto ottimale. I trasporti AJAX/COMET/long poll sono utilizzati solo se il browser non ha WebSocket nativi e si sceglie di non utilizzare il fallback.

Incluso con noVNC (client VNC HTML5) è websockify che è un proxy socket WebSocket. Esistono tre implementazioni: C, python e Node. Potrebbe essere un riferimento utile per te. noVNC trasferisce grandi quantità di dati su WebSockets ed è molto sensibile alla latenza. Il fallback Flash è decisamente meno efficiente, ma ha comunque prestazioni molto utilizzabili.(Disclaimer: ho fatto noVNC)

In sintesi: l'unico posto WebSockets non è supportato in questo momento sta browser senza WebSockets nativi e senza flash (cioè iOS correnti e telefoni Android più vecchi).

Un paio di note misc:

  • trovo http://caniuse.com di essere miglior risorsa per HTML5 (e correlati) informazioni di supporto del browser.

  • HTML5 Cross-browser Polyfills è un elenco molto utile (e lungo) di shim, fallback e polyfill che aggiunge funzionalità HTML5 ai browser che non li supportano.

0

Secondo WebSockets:

Per il lato client, WebSocket viene implementato in Firefox 4, Google Chrome 4, Opera 10.70 e Safari 5.

modo che gli utenti avranno problemi se prova a utilizzare un browser non elencato sopra ...

+1

Se l'utente desidera riprodurre un MMO nelle probabilità del browser, non sta utilizzando IE – jcolebrand

0

È possibile utilizzare Flash Sockets per emulare WebSocket nativi su vari browser, purché siano abilitati per Flash.

1

Dai uno sguardo a Socket.IO. Ti permette di programmare contro un'API simile a WebSockets che funziona in modo nativo nei pochi browser che attualmente supportano WebSockets, ma torna a Flash o polling lungo nei browser più vecchi. Utilizzando un polyfill come Socket.IO, è certamente possibile iniziare a utilizzare WebSockets immediatamente.