无法在 ws://localhost:8000/socket/server/startDaemon.php 建立与服务器的连接。 var socket = new WebSocket(host);

Posted

技术标签:

【中文标题】无法在 ws://localhost:8000/socket/server/startDaemon.php 建立与服务器的连接。 var socket = new WebSocket(host);【英文标题】:Can't establish a connection to the server at ws://localhost:8000/socket/server/startDaemon.php. var socket = new WebSocket(host); 【发布时间】:2011-09-04 13:37:44 【问题描述】:

我正在使用javascript连接websocket:

<script>
    var socket;  
    var host = "ws://localhost:8000/socket/server/startDaemon.php";  
    var socket = new WebSocket(host);  
</script>

我得到了错误:

无法与服务器建立连接

var host = "ws://localhost:8000/socket/server/startDaemon.php";
var socket = new WebSocket(host);

我该如何解决这个问题?

注意:我在 mozilla 中启用了 websocket 以支持 web socket 应用程序。 当我在 chrome 中运行时出现错误:

   can't establish a connection to the server at ws://localhost:8000/socket/server/startDaemon.php. var socket = new WebSocket(host);

【问题讨论】:

你试过从 cli 运行 startDaemon.php 吗?并且 startDaemon.php 应该包含监听端口 8000。 首先将客户端和服务器端代码分开。 :) 【参考方案1】:

显然,firefox 4 由于漏洞而禁用了 websockets。引用这篇文章:

WebSocket disabled in Firefox 4

最近的发现发现 Websocket 使用的协议容易受到攻击。 Adam Barth 演示了一些针对协议的严重攻击,攻击者可以利用这些攻击来毒害位于浏览器和 Internet 之间的缓存。

【讨论】:

浏览器没有问题,我在firefox中启用了websocket。可能是端口或套接字的问题。【参考方案2】:

我通过此链接跟踪代码解决了我的错误

http://www.flynsarmy.com/2010/05/php-web-socket-chat-application/ 并为响应消息创建了 socketWebSocketTrigger.class.php 文件,其中代码为

class socketWebSocketTrigger
   

        function responseMessage($param)
        
            $a = 'Unknown parameter';

            if($param == 'age')
                $a = "Oh dear, I'm 152";
            

            if($param == 'hello')
                $a = 'hello, how are you?';
            

            if($param == 'name')
                $a = 'my name is Mr. websocket';
            

            if($param == 'today')
                $a = date('Y-m-d');
            

            if($param == 'hi')
                $a = 'hi there';
            

            return $a;

        


并在“WebSocketServer.php”的发送函数中添加代码,用于调用响应请求消息的“responseMessage”函数

 public function send($client, $msg)
        $this->say("> ".$msg);
        $messageRequest = json_decode($msg,true);

            // $action=$messageRequest[0];
            $action = 'responseMessage';
            $param  = $messageRequest[1]['data'];
        if( method_exists('socketWebSocketTrigger',$action) )
                                $response = socketWebSocketTrigger::$action($param);
                            
            $msg = json_encode(
                array(                      
                'message',
                    array('data' => $response)
                )
            );

            $msg = $this->wrap($msg);

        socket_write($client, $msg, strlen($msg));
    

效果很好。

【讨论】:

很抱歉,您在这段代码中在哪里使用新的 websocket? 请查看上面的链接,我从中获取代码并从命令行首先运行 server.php,然后运行索引文件。您可以获得结果。【参考方案3】:

您是否尝试在 Firefox 中运行客户端?根据the documentation:

截至 2 月 10 日,仅有的浏览器 支持 websockets 的是 Google Chrome 和 Webkit Nightlies。从这里获取 http://www.google.com/chrome

尝试在 Chrome 中运行它,看看是否适合您。

【讨论】:

【参考方案4】:

首先你的错误是使用 php 函数和 javascript require_once 'WebSocket.php'; 然后按照下面的链接阅读教程。

http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/

一切正常。

谢谢,

【讨论】:

我已更正它,但 websocket 的包在我的系统中无法正常工作。在聊天中发送请求消息时您收到消息了吗?我仍然面临这个错误。提前谢谢你。

以上是关于无法在 ws://localhost:8000/socket/server/startDaemon.php 建立与服务器的连接。 var socket = new WebSocket(host);的主要内容,如果未能解决你的问题,请参考以下文章

无法在 SQL Server 视图中使用工作查询:“IS”无法识别“>”无法识别

无法在春季导入 org.apache.poi,因此无法编译

无法理解为啥计算在没有手表的情况下无法工作

React 无法编译模块未找到:无法在listingDetail 上解析

为啥 Today Widget 在 iOS 14 上显示“无法加载”且无法调试?

“无法在此文件中预览 - 无法启动 [应用程序名称]”