3 Stimmen

PHP Web Sockets - Handshake gemacht, aber nicht gesendet und empfangen

Ich habe kürzlich Folgendes heruntergeladen http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/

php-Klassen, um einen PHP-Web-Sockets-Server zu erstellen.

Ich habe den startDaemon über die Kommandozeile gestartet und wenn ich die Seite client.php besuche, wird der Handshake eindeutig protokolliert:

C:\wamp\bin\php\php5.3.5>php -f C:/wamp/www/socket/server/startDaemon.php
2011-09-09 13:55:42 System: Socket Resource id #7 created.
2011-09-09 13:55:42 System: Socket bound to localhost:8080.
2011-09-09 13:55:42 System: Start listening on Socket.
2011-09-09 13:56:40 WebSocket: Resource id #8 CONNECTED!
2011-09-09 13:56:40 WebSocket: Requesting handshake...
2011-09-09 13:56:40 WebSocket: Handshaking...
2011-09-09 13:56:40 WebSocket: Done handshaking...
2011-09-09 13:58:18 WebSocket: Resource id #8 disconnected!
2011-09-09 13:58:23 WebSocket: Resource id #9 CONNECTED!
2011-09-09 13:58:23 WebSocket: Requesting handshake...
2011-09-09 13:58:23 WebSocket: Handshaking...
2011-09-09 13:58:23 WebSocket: Done handshaking...
2011-09-09 13:59:14 WebSocket: Resource id #9 disconnected!
2011-09-09 13:59:14 WebSocket: Resource id #10 CONNECTED!
2011-09-09 13:59:14 WebSocket: Requesting handshake...
2011-09-09 13:59:14 WebSocket: Handshaking...
2011-09-09 13:59:14 WebSocket: Done handshaking...
2011-09-09 14:00:16 WebSocket: Resource id #11 CONNECTED!
2011-09-09 14:00:16 WebSocket: Requesting handshake...
2011-09-09 14:00:16 WebSocket: Handshaking...
2011-09-09 14:00:16 WebSocket: Done handshaking...
2011-09-09 14:00:16 WebSocket: Resource id #11 disconnected!
2011-09-09 14:00:23 WebSocket: Resource id #12 CONNECTED!
2011-09-09 14:00:23 WebSocket: Requesting handshake...
2011-09-09 14:00:23 WebSocket: Handshaking...
2011-09-09 14:00:23 WebSocket: Done handshaking...
2011-09-09 14:00:23 WebSocket: Resource id #12 disconnected!
2011-09-09 14:00:33 WebSocket: Resource id #13 CONNECTED!
2011-09-09 14:00:33 WebSocket: Requesting handshake...
2011-09-09 14:00:33 WebSocket: Handshaking...
2011-09-09 14:00:33 WebSocket: Done handshaking...
2011-09-09 14:00:33 WebSocket: Resource id #13 disconnected!

(ich stelle ein paar Verbindungen her, um sie zu testen)

Mein Problem ist, dass ich nicht in der Lage zu sein scheine, Informationen zu senden oder zu empfangen. In den php-Klassen habe ich Stufen eingestellt, um 1,2,3... an jedem Punkt in das Protokoll zu schreiben, was man wiederum deutlich durch das Befehlsfenster sehen kann. Aber wenn ich versuche, Daten zu senden, wird nichts in das Protokoll ausgegeben.

Si Ich ging dann zum vorderen Ende und versuchte Folgendes

if(!("WebSocket" in window)){
        $('#chatLog, input, button, #examples').fadeOut("fast");    
        $('<p>Oh no, you need a browser that supports WebSockets. How about <a href="http://www.google.com/chrome">Google Chrome</a>?</p>').appendTo('#container');     
    }else{
        //The user has WebSockets

    connect();

    function connect(){
            //var socket;
            var host = "ws://localhost:8080/socket/server/startDaemon.php";

            try{
                var socket = new WebSocket(host);
                socket.onopen = function(){
                    alert('open');
                    message('<p class="event">Socket Status: '+socket.readyState+' (open) </p>');   
                }
            ..........
            ........

Wenn keine Meldung gemacht wird...., weiß jemand, was hier falsch sein könnte?

Grüße

1voto

evildead Punkte 4397

EDIT: Es scheint tatsächlich eine funktionierende Implementierung zu geben. Siehe @Steve Lazaridis Antwort.

Vor einiger Zeit hat sich die Spezifikation des Websockets-Protokolls geändert (der Handshake-Prozess wurde angepasst), so dass man mit heutigen Browsern den Code von phpwebsockets nicht mehr verwenden kann.

Wie auch immer, im Dezember 2010 gab es einen Blogpost von Christopher Blizzard, dass die Websocket-Implementierung aus Firefox 4 entfernt wurde. Seitdem habe ich es nicht mehr richtig verfolgt, daher kann ich nicht sagen, ob es aktuell in den Browsern wie Opera und Firefox ist. Vielleicht haben sie es irgendwie wieder aktiviert.

Ich habe vor einiger Zeit eine funktionierende Version implementiert, aber da Websockets im Allgemeinen modifiziert werden (war angreifbar mit einem cached poisoned dns Angriff) habe ich die Arbeit an der Implementierung eingestellt. Ich weiß also nicht, ob es jetzt korrekt funktioniert. Sie können meinen Blogpost über das Entfernen und die Änderungen im Handshake-Prozess lesen:

http://ra23.net/wop/category/html5/

Dort können Sie auch meinen Code erhalten und testen, ob er funktioniert.

Ich empfehle Ihnen, entweder Java- oder Node.js-Websocket-Implementierungen zu verwenden, wenn diese korrekt funktionieren. Ich weiß das nicht sicher.

0voto

Steve Lazaridis Punkte 2190

Vielleicht hilft das hier... es ist ein weiterer php-Websocket-Server... spoutserver

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X