用于树莓派的棘轮网络插座



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

我已经尝试了一天半,但没有成功。有人有什么建议吗?甚至帮我找出问题?

websocket代码遵循Ratchet Push Server教程:

    <?php
       require '/var/www/html/vendor/autoload.php';
       $loop = ReactEventLoopFactory::create();
       $pusher = new MyAppPusher;
       $context = new ReactZMQContext($loop);
       $pull->bind('tcp://127.0.0.1:5555');
       $pull->on('message',array($pusher, 'onBlogEntry'));
       $webSock = new ReactSocketServer($loop);
       $webSock->listen(443, '0.0.0.0');
       $webServer = new RatchetServerIoServer(
           new RatchetHttpHttpServer(
               new RatchetWebsocketWsServer(
                   new RatchetWampWampServer(
                       $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地址都可以工作。

这是我自己问题的一个很晚的答案,但以防有人仍然对同样的问题感到困惑。答案是不要使用棘轮。使用nodejs和socket.io。你所有的麻烦都会烟消云散。Socket.io也有一个java实现,它只是一个针对WebSockets的更为开发的包。

相关内容

  • 没有找到相关文章

最新更新