【问题标题】:PHP Web Sockets - Handshake Made but Not Sending and recievingPHP Websockets - 握手但不发送和接收
【发布时间】:2011-11-13 20:59:02
【问题描述】:

我最近下载了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>');   
                }
            ..........
            ........

Where 没有发出警报....有人知道这里可能出了什么问题吗?

问候

【问题讨论】:

    标签: php sockets send web


    【解决方案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 实现。我不确定。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 嗯,有一个实现。很高兴知道。它有点新。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-11
      • 1970-01-01
      • 2012-02-23
      • 1970-01-01
      • 1970-01-01
      • 2012-02-22
      • 2016-02-22
      相关资源
      最近更新 更多