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

标签 php sockets send web

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

用于创建 PHP 网络套接字服务器的 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>');   
                }
            ..........
            ........

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

问候

最佳答案

编辑: 似乎实际上有一个有效的实现。请参阅@Steve Lazaridis 的回答。

不久前,websockets 协议(protocol)的规范发生了变化(调整了握手过程),因此在今天的浏览器中,您无法使用 phpwebsockets 中的代码。

无论如何,在 2010 年 12 月,Christopher Blizzard 发表了一篇博客文章,指出 websocket 实现已从 Firefox 4 中删除。从那时起我就没有正确地遵循它,所以我无法告诉你它目前是否在浏览器中比如 Opera 和 Firefox。也许他们以某种方式重新启用了它。

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

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

您还可以在那里获取我的代码并测试它是否有效。

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

关于PHP Websockets - 握手但不发送和接收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7363438/

相关文章:

php - 奇怪的重写(Apache mod_rewrite)

java - DatagramSocket.send() 失败, "BindException: Cannot assign requested address"为 0.0.0.0

java - 客户端-服务器程序

Android - 发送 DatagramSocket 最大缓冲区大小

java - 安装应用程序后立即发送 FCM 注册

php - 如何在我的 WordPress 页脚中包含 Jquery?

node.js - 使用 Socket.io 和 Redis 的 Node 集群问题

java - 尝试使用javamail在java中发送电子邮件

c - Sprintf 缓冲区 Char[] 尾随 null

php - 我可以将 PSR-7 StreamInterfaces 与 PHP 的 native 流函数一起使用吗?