带有PHP和JS URL问题的WebSockets

时间:2017-01-15 18:41:44

标签: javascript php web websocket server

我现在正试图弄清楚WebSockets。我在PHP中使用Ratchet进行了服务器设置。我从命令行运行服务器,并且可以使用来自其他几个终端窗口的“telnet localhost 8181”连接到它,并且它们可以相互通信。这是代码的样子(非常简单):

$server = IoServer::factory(
    new Chat(),
    8181
);
$server->run();

接下来,我将使用此代码尝试使用网站:

$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代码:< / p>

$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中进行并连接从其他终端窗口。

我正在阅读本教程:http://socketo.me/docs/hello-world

1 个答案:

答案 0 :(得分:0)

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