PHP Websockets - 握手但不发送和接收

时间:2011-09-09 14:45:13

标签: php sockets send web

我最近下载了http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/

用于创建PHP Web套接字服务器的php类。

我通过命令行运行了startDaemon,当我访问client.php页面时,清楚地记录了握手:

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!

(我做了几个连接测试)

我的问题是我似乎无法发送或接收信息。 在php类中,我已设置阶段将1,2,3 ...写入每个点的日志,这也可以通过命令窗口清楚地看到。但是当我尝试发送数据时,没有任何内容输出到日志中。

我然后去了前端尝试了这个

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>');   
                }
            ..........
            ........

什么都没有发出警报....有谁知道这里可能出现什么问题?

问候

2 个答案:

答案 0 :(得分:1)

编辑: 似乎实际上有一个有效的实现。见@Steve Lazaridis答案。

不久前,websockets协议的规范发生了变化(握手过程已经调整),这样今天的浏览器就无法使用phpwebsockets中的代码了。

无论哪种方式,在2010年12月,Christopher Blizzard发布了一篇博客文章,说明websocket实现已从Firefox 4中删除。从那以后我没有正确地遵循它,所以我不能告诉你它是否目前在浏览器中喜欢Opera和Firefox。也许他们以某种方式重新启用它。

我之前已经实现了一个工作版本,但由于websockets通常被修改(可以通过缓存的中毒dns攻击进行攻击),所以我停止了实现。所以我不知道它现在是否正常工作。 您可以阅读我关于删除的博客文章以及握手过程中发生的变化:

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

在那里你也可以得到我的代码并测试它是否有效。

我建议你使用java或node.js websocket实现,如果它们正常工作的话。我肯定不知道。

答案 1 :(得分:0)

也许这会有所帮助......这是另一个php websocket服务器...... spoutserver