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

时间:2015-09-25 09:45:00

标签: php websocket socket.io ratchet

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();  
?>

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

我现在该怎么办?

3 个答案:

答案 0 :(得分:2)

$server = IoServer::factory(
new HttpServer(
    new WsServer(
        new Chat()
    )
),
8282

);

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

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

答案 1 :(得分:1)

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

如果您使用的是具有ssh访问权限的私人服务器,则可以尝试MarshallOfSound的解决方案。

或者如果您只需要websocket作为服务,您可以使用类似Pusher的内容。

答案 2 :(得分:0)

这意味着其他进程正在端口8080上运行。可能是某种类型的Web服务器。

您可以使用命令

找出正在运行的内容
lsof -i :8000

您可以使用该端口停止该进程。或者在另一个端口上运行Ratchet。