Home-Produkte-Testarea-Kontakt-Datenschutz-Aktualisiert: 15-Jul-2010
< Voriger Tag   Nächster Tag >

Donnerstag, 15. Juli 2010

WebSockets: Flash-Fallback mit web-socket-js

In älteren Webbrowsern können WebSockets z.B. via Flash oder Java benutzt werden. Eine fertige Flashlösung ist web-socket-js von Hiroshi Ichikawa.

Hinzugefügt und geladen werden brauchen nur die 4 Dateien FABridge.js, swfobject.js, web_socket.js und WebSocketMain.swf von web-socket-js (Download).

Diese werden eingebunden mit:

<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript" src="FABridge.js"></script>
<script type="text/javascript" src="web_socket.js"></script>

und der Zeile:

// URL auf WebSocketMain.swf
WEB_SOCKET_SWF_LOCATION = "WebSocketMain.swf";

Flash: Socket-Policy-File

Zusätzlich muss für Flash 9+ mit dem Socket-Policy-File der Zugriff auf dem Server via Flash-Sockets erlaubt werden:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
   <site-control permitted-cross-domain-policies="master-only"/>
   <allow-access-from domain="www.sven-drieling.de" to-ports="12345" />
</cross-domain-policy>

Bevorzugt wird diese Datei auf Port #843 bereitgestellt. Findet Flash sie dort nicht, dann sendet Flash in einem zweitem Versuch den Socket-Policy-Request an den Port mit dem die Verbindung aufgebaut werden soll - in diesem Fall Port #12345. Ich benutze derzeit letztere Möglichkeit wodurch der Verbindungsaufbau etwas länger dauert.

Läuft

Damit steht dann ein WebSocket()-Objekt zur Verfügung, welches sich wie das in neueren Webbrowsern vorhandene verhält, so dass am restlichen Skript nichts geändert werden muss.

Echo-Demo (Zur Zeit nicht online): http://www.sven-drieling.de:12345/

Mit Firefox 3.6.6 funktioniert diese Lösung problemlos. In Opera 10.60 fehlt bei mir mit den eigenen WebSocket-Server oft ein erfolgreiches Öffnen 'onOpen' der Verbindung.

Die benutzte Technik erkennt das Skript mit folgender Abfrage:

socket = new WebSocket(url);

if(socket.__createFlash) {
    log("Benutze Flash-Fallback.")
} else {
    log("Benutze WebSocket() des Webbrowsers.")
}

[Direktlink]

< Voriger Tag   Nächster Tag >

  RSS V0.91

<Juli 2010 >
   01020304
05060708091011
12131415161718
19202122232425
262728293031 

Home-Produkte-Testarea-Kontakt-Datenschutz-Aktualisiert: 15-Jul-2010
(C) 2000-2018 by Sven Drieling