Javascript 存在PHP和JS URL问题的WebSocket

Javascript 存在PHP和JS URL问题的WebSocket,javascript,php,web,websocket,server,Javascript,Php,Web,Websocket,Server,我只是想弄清楚WebSocket。我在PHP中使用Ratchet设置了一个服务器。我从命令行运行服务器,并且可以使用其他两个终端窗口中的“telnet localhost 8181”很好地连接到服务器,并且它们可以相互通信。下面是该代码的外观(非常简单): 因此,接下来,我将使用以下代码在一个网站上进行尝试: $server = IoServer::factory( new HttpServer( new WsServer( new Chat()

我只是想弄清楚WebSocket。我在PHP中使用Ratchet设置了一个服务器。我从命令行运行服务器,并且可以使用其他两个终端窗口中的“telnet localhost 8181”很好地连接到服务器,并且它们可以相互通信。下面是该代码的外观(非常简单):

因此,接下来,我将使用以下代码在一个网站上进行尝试:

$server = IoServer::factory(
    new HttpServer(
        new WsServer(
            new Chat()
        )
    ),
    8181
);
$server->run();
对于Javascript:

var url = 'wss://' + location.hostname + ':8181';
var ws = new WebSocket(url);
ws.onload...
ws.onmessage...
但是,我无法构造URL,它总是会立即给我一个错误,比如:“WebSocket握手时出错:意外响应代码:200”或500或404。我还尝试了以下PHP代码:

$app = new Ratchet\App('mywebsiteurl.com', 8181);
$app->route('/chat', new Chat);
$app->route('/echo', new Ratchet\Server\EchoServer, array('*'));
$app->run();
还是什么都没有。我使用了我的实际网站URL,并尝试了JS中的/echo和/chat的每一种组合,但没有任何效果。应该注意的是,我正试图在Bluehost托管的网站上实现这一点。如果这在托管公司是不可能的,请告诉我,但我觉得是这样,因为我有SSH访问权限,可以无限期地执行服务器php文件,而且只要在php中执行并从其他终端窗口连接,它就可以正常工作


我正在学习本教程:

我以前遇到过这个问题,但使用Apache PHP配置时遇到了这个问题。解决方案是生成一个IPC文件,该文件将侦听WebSocket请求,由Apache模块负责处理这些请求。每当服务器启动时,必须生成此IPC文件。我不确定这是你的问题。如果不是,那么请告诉我删除我的答案,然而,您在WebSocket握手方面遇到问题这一事实意味着您在服务器上缺少了一些东西,可能是一个处理WebSocket请求的独立应用程序

$app = new Ratchet\App('mywebsiteurl.com', 8181);
$app->route('/chat', new Chat);
$app->route('/echo', new Ratchet\Server\EchoServer, array('*'));
$app->run();