Ratchet Websocket for raspberry pi

问题描述 投票:1回答:1

我用棘轮写了一个websocket。网络服务器是nginx,生活在树莓派上。树莓派已通过端口转发与路由器连接到互联网。当我在工作中访问该网站时,一切正常。 websocket连接,所有网页都启动。当我尝试在工作之外访问网页时,除了websocket之外,网页都可以正常工作。最糟糕的是我甚至无法调试它,因为我需要在本地网络之外使websocket失败(即不工作)。在工作中,我可以使用两个IP地址连接到服务器,只能在本地访问的私有IP地址和可以从任何地方访问的公共IP地址。两个IP地址都正确启动websocket。当我不在工作时,我只能访问公共IP地址上的Web服务器,并且websocket不起作用。

我一直试图让这项工作连续一天半没有成功。有人有什么建议吗?甚至帮我找出问题所在?

websocket代码遵循Ratchet Push Server教程:

    <?php
       require '/var/www/html/vendor/autoload.php';

       $loop = React\EventLoop\Factory::create();
       $pusher = new MyApp\Pusher;

       $context = new React\ZMQ\Context($loop);
       $pull->bind('tcp://127.0.0.1:5555');
       $pull->on('message',array($pusher, 'onBlogEntry'));

       $webSock = new React\Socket\Server($loop);
       $webSock->listen(443, '0.0.0.0');
       $webServer = new Ratchet\Server\IoServer(
           new Ratchet\Http\HttpServer(
               new Ratchet\Websocket\WsServer(
                   new Ratchet\Wamp\WampServer(
                       $pusher
                   )
               )
           ),
           $webSock
       );
       $loop->run();
    ?>

客户端代码是:

    var conn = new ab.Session('ws://privateIPAddress:443',
        function (){
            console.log("Here");
            conn.subscribe('client',function(topic,data) {
                console.log("hey");
                ...
            });
        },
        function() {
            console.warn('Websocket connection closed');
        },
        {'skipSubprotocolCheck': true}
    );

我怀疑这个问题是一个安全设置,因为当我在工作现场时,公共和私人IP地址都能正常工作。

php security nginx websocket ratchet
1个回答
0
投票

这是对我自己的问题的一个非常晚的答案,但万一有人仍然困惑于同样的问题。答案是不要使用棘轮。将nodejs与socket.io一起使用。你所有的烦恼都会消失。 Socket.io也有一个java实现,只是一个更加开发的WebSockets包。

© www.soinside.com 2019 - 2024. All rights reserved.