Home-Produkte-Testarea-Kontakt-Aktualisiert: 17-Jan-2014
< Voriger Tag   Nächster Tag >

Donnerstag, 29. Juli 2010

WebSockets: RWebSocketsServer V0.1 alpha

Der RWebSocketsServer für PHP 5.3+ -- ist etwas aufwendiger geworden, kann dafür aber auch statische Webinhalte sowie für Flash das Socket-Policy-File bereitstellen.

Installation

svn checkout https://svn.rubisco.eu/repos/trunk/php/Rubisco/RWebSocketsServer/ RWebSocketsServer

Starten mit

php rwebsocketsserver.php

php rwebsocketsserver.php --ipaddress 127.0.0.1 --port 12345

Aufruf im Webbrowser über: http://127.0.0.1:12345/

Zum Beenden CTRL-C drücken.

Einstellungen in conf/rwebsockets.ini.

HandleWebSockets.php

Der Hauptteil für die WebSockets liegt in HandleWebSockets.php. doUpgrade() verarbeitet den Opening-Handshake des Clients.

In handle() findet die Verarbeitung der Eingaben statt, die an die entprechenden Methoden des Event-Handlers weitergegeben werden.

websockets/Events.php

websockets/Events.php ist die Basisklasse der WebSockets-Event-Handler.

Mit sendTextFrame($text, $doUTF8Encode = false) wird ein Textframe verschickt und mit close() kann die Verbindung von der Serverseite aus geschlossen werden.

onOpen(), onClose($reason), onTextFrame($text), onTrigger($event) und onError($error) sind die Methoden zur Verarbeitung der Events. onTrigger() wird bei serverseitigen Events aufgerufen. Dies ist im Moment nur der Zeitgeber (alle 30 Sek.).

Eigenen Event-Handler schreiben

Als Beispiel liegt in net/server/websockets/EchoWS.php der Echo-Event-Handler, welcher alle Eingaben unverändert zurückschickt.

Für einen eigenen Event-Handler wird in net/server/websockets/ eine Datei mit einer Unterklasse von net/server/websockets/Events.php angelegt z.B. MyHandler.php und die onXXX()-Methoden passend überschrieben.

In conf/rwebsockets.ini muss der ws://-Pfad zu diesem Handler unter [websockets] eingetragen werden.

[websockets]
; Classname = "path";

EchoWS  = "/echo"
MyHandler = "/myhandler"

Nach dem Neustart des Servers ist dieser Handler über ws://127.0.0.1:12345/myhandler erreichbar.

Die weiteren Klassen

Server.php
Die Klasse des Servers. Diese erzeugt den Server, wartet auf Verbindungen (listen()), akzeptiert diese (accept()), erzeugt die Client-Handler und reicht die Eingaben an die Handler über deren handle()-Methoden weiter.
HandleClient.php
Die Basisklasse für die Client-Handler. Diese erhalten in der handle()-Methode die Eingaben und schreiben ihre Ausgaben via fwrite($this->stream, 'output');
HandleHTTP.php
Umfangreicher Client-Handler für die Auslieferung von statischen Webinhalten, den Upgrade auf WebSockets und der Bereitstellung der Flash-Policy.
Header.php, RequestHeader.php, ResponseHeader.php
Klassen zum Parsen und Erstellen der HTTP-Header.

Quelltext (MIT Lizenz)

Der komplette Quelltext von RWebSocketsServer liegt in Subversion: Heutige Revision 31, aktuelle Version.

[Direktlink]

< Voriger Tag   Nächster Tag >

  RSS V0.91

<Juli 2010 >
   01020304
05060708091011
12131415161718
19202122232425
262728293031 

Home-Produkte-Testarea-Kontakt-Aktualisiert: 17-Jan-2014
(C) 2000-2014 by Sven Drieling