我现在使用的代码是:
<!--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。输入输出连接。