使用套接字在客户端使用什么IP地址.IO用于生产



我现在使用的代码是:

    <!--Socket.io -->
    <script src='http://172.16.17.185:3000/socket.io/socket.io.js'></script>

其中,172.16.17.185是服务器所在局域网的IP地址,端口3000用于套接字。io沟通。

关于套接字的示例。io网站使用localhost代替服务器IP地址。我从这个开始。使用localhost,我的页面在服务器上加载得很好,但是LAN上没有其他PC能够创建套接字对象(因为它试图寻找套接字)。IO在其本地主机上,它不在那里)。

因此,我将localhost更改为服务器的IP地址,一切都工作正常。

直到,我试着从外面进入它。因为这个IP地址只在局域网内有效,所以它不能像在互联网上那样工作。

是否有解决这个问题的方法?还是我需要找到服务器的公共IP并使用它?由于我没有授权,这会给服务器造成安全漏洞吗?

So far: http://www.ipsacademy.org/weather

web-server.js中的服务器代码

如果要访问套接字。如果你想从局域网外的服务器访问你的服务器,你必须使用公共IP(并且可能避免使用端口3000)。

在生产环境中,你必须使用前端代理(如nginx)将请求转换到你的套接字。

在nginx博客中,你可以使用如下示例:

location /socket.io/ {
    proxy_pass http://172.16.17.185:3000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";    
}

这不会造成任何不同于互联网上任何可公开访问的服务的安全问题。

查看您的代码,您使用单独的http实例来提供page和socket.io。如果您将其更改为使用相同的http服务器,则可以为套接字使用相对URL。输入输出连接。

相关内容

  • 没有找到相关文章

最新更新