如何远程或在服务器上运行 Ratchet?

Posted

技术标签:

【中文标题】如何远程或在服务器上运行 Ratchet?【英文标题】:How to run Ratchet remotely or on a server? 【发布时间】:2015-12-23 02:52:44 【问题描述】:

在 XAMPP 上的本地计算机上一切正常。但是在我将文件上传到服务器后,它会出现这样的错误......

Fatal error: Uncaught exception 'React\Socket\ConnectionException' with message 'Could not bind to tcp://0.0.0.0:8080: Address already in use' in 
/home/sites/jemaottest.com/public_html/websocket/vendor/react/socket/src/Server.php:29 Stack trace: #0 
/home/sites/jemaottest.com/public_html/websocket/vendor/cboden/ratchet/src/Ratchet/Server/ioserver.php(70): React\Socket\Server->listen(8080, '0.0.0.0') #1 
/home/sites/jemaottest.com/public_html/websocket/bin/chat-server.php(17): Ratchet\Server\IoServer::factory(Object(Ratchet\Http\HttpServer), 8080, '0.0.0.0') #2 main thrown in 
/home/sites/jemaottest.com/public_html/websocket/vendor/react/socket/src/Server.php on line 29

当我运行 chat-server.php 文件时。

我在 Ratchet 的故障排除页面上发现了一些内容,

如果你想打开 Ratchet(不是在代理之后),请将 App 的第三个参数设置为 '0.0.0.0'。

我试过了,但是没用,

<?php 
use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
use MyApp\Chat;

require dirname(__DIR__).'/vendor/autoload.php';

$server = IoServer::factory(
    new HttpServer(
        new WsServer(
            new Chat()
        )
    ),
    8080,
    '0.0.0.0'
);

$server->run();  
?>

它仍然给出了同样的错误。

我现在该怎么办?

【问题讨论】:

您找到解决此问题的方法了吗?我有同样的问题,我没有找到任何东西 【参考方案1】:
$server = IoServer::factory(
new HttpServer(
    new WsServer(
        new Chat()
    )
),
8282

);

只需更改端口并尝试.. 更改端口后我的工作正常。并且不要忘记在 websocket javascript 类中更改端口中的端口。

var conn = new WebSocket('ws://yourdomain.com:8282');

【讨论】:

【参考方案2】:

我后来发现在共享服务器上不允许使用其他端口。

如果您在具有 ssh 访问权限的私有服务器上,可以尝试 MarshallOfSound 的解决方案。

或者,如果您只需要 websocket 作为服务,您可以使用 Pusher 之类的东西。

【讨论】:

【参考方案3】:

这意味着另一个进程正在端口 8080 上运行。可能是某种网络服务器。

你可以通过命令找出正在运行的东西

lsof -i :8000

您可以停止已经使用该端口的进程。或者在不同的端口上运行 Ratchet。

【讨论】:

我尝试了许多其他端口,但它仍然给出了同样的错误。我是否必须提供服务器的 IP 地址来代替“0.0.0.0”。 (我很困惑,什么都没有)

以上是关于如何远程或在服务器上运行 Ratchet?的主要内容,如果未能解决你的问题,请参考以下文章

无需 cli 即可运行 Ratchet php 服务器

远程处理异常:对象“xxx.rem”已断开连接或在服务器上不存在

iis8 上 WSS 上的 Ratchet Websockets

React/ZMQ/Ratchet - Websocket 服务器响应

使用C#远程设置IIS AppPool用户的文件权限

如何使实时服务器 Ratchet WebSockets 工作?