WebSockets? Ich bin gerade über Websockets gestolpert und habe ein paar gute Dinge darüber gehört, aber ich habe festgestellt, dass html5 zu diesem Zeitpunkt nicht wirklich verfügbar ist. Würde es sich also lohnen, ein browserbasiertes MMO in Websockets zu schreiben und die Spieler zu upgraden / Laden Sie herunter, was sie brauchen, oder benutzen Sie den Kometen, und wenn ein Browser die WebSockets unterstützt; so laufen? Irgendwelche Gedanken?
Antwort : Es ist nicht zu neu und Sie können es jetzt in fast jedem Browser verwenden.
WebKit hat schon seit einiger Zeit WebSockets-Unterstützung (im Prinzip jeder, der Safari oder Chrome verwendet). Ab iOS 4.2 wurden WebSockets aktiviert (Apple hatte es in früheren Versionen deaktiviert). Opera 11.0 wird es haben (10.7 ist jetzt 11.0). Firefox 4.0 hat es standardmäßig integriert, aber standardmäßig deaktiviert (aktiviert in about: config). Firefox 5.0 oder 6.0 wird wahrscheinlich standardmäßig aktiviert sein.
Für andere Browser können Sie web-socket-js verwenden, das ein Flash-basiertes Fallback ist. Es funktioniert gut und es ist einfach, automatische Rückfall zu tun. Es ist langsamer als native WebSockets, hat aber immer noch eine wesentlich geringere Latenz als AJAX / COMET.
Wenn Javascript eine gültige Option für das Backend ist, sollten Sie den Knoten und Socket.IO Bibliothek für Knoten. Socket.IO ist hauptsächlich eine serverseitige Bibliothek, die WebSockets unterstützt (es beinhaltet das web-socket-js falback) und verschiedene AJAX / COMET / long-poll-Methoden. Die Client-Seite von Socket.IO ermöglicht es Ihnen, die gleiche API wie auf der Serverseite zu verwenden (sie ist der normalen WebSockets-API sehr ähnlich), und sie erkennt und wählt den optimalen Transport aus. Die AJAX / COMET / Long-Poll-Übertragungen werden nur verwendet, wenn der Browser keine systemeigenen WebSockets hat und Sie das Fallback nicht verwenden.
Im Lieferumfang von noVNC (HTML5 VNC-Client) ist websockify enthalten, bei dem es sich um einen WebSockets-zu-TCP-Socket-Proxy handelt. Es gibt drei Implementierungen: C, Python und Node. Es könnte eine nützliche Referenz für Sie sein. noVNC überträgt große Datenmengen über WebSockets und reagiert sehr empfindlich auf Latenz. Das Flash-Fallback ist definitiv weniger effizient, aber es hat immer noch eine sehr brauchbare Leistung. (Disclaimer: Ich machte keine VNC)
Zusammenfassung : WebSockets wird derzeit nur von Browsern ohne native WebSockets und ohne Flash (d. h. aktuelle iOS- und ältere Android-Telefone) unterstützt.
Ein paar verschiedene Notizen:
Ich finde Ссылка die beste Ressource für HTML5-Browser-Support-Informationen.
HTML5 Cross-Browser-Polyfills ist eine sehr nützliche (und lange ) Liste von Shims, Fallbacks und Polyfills, die HTML5-Funktionen zu Browsern hinzufügen, die diese nicht unterstützen.
Schauen Sie sich Socket.IO an. Sie können damit gegen eine WebSockets-ähnliche API programmieren, die nativ in den wenigen Browsern funktioniert, die derzeit WebSockets unterstützen, aber in älteren Browsern auf Flash oder lange Abfragen zurückgreifen. Mit einem Polyfill wie Socket.IO ist es sicherlich möglich, WebSockets sofort zu verwenden.
Laut WebSockets :
Für die Client-Seite ist WebSocket in Firefox 4, Google Chrome 4, Opera 10.70 und Safari 5 implementiert.
So haben Ihre Benutzer Probleme, wenn sie versuchen, einen Browser zu verwenden, der nicht oben aufgeführt ist ...
Sie können Flash Sockets verwenden, um native WebSockets auf einer Vielzahl von Websites zu emulieren Browser, solange sie Flash aktiviert haben.