【问题标题】:Socket.io/node.js on local network?本地网络上的 Socket.io/node.js?
【发布时间】:2011-11-19 21:53:15
【问题描述】:

我在同一个网络上有两台机器,分别是 192.168.1.2 和 192.168.1.3。

192.168.1.2 = 服务器/开发电脑

192.168.1.3 = 客户端/浏览器电脑

所以在 server/dev pc 上,我有一个 socket.io/http 服务器在端口 82 上运行

在客户端服务器上,我使用 chrome 作为浏览器

服务器正在托管类似的网页

<html>
....
    <script type="text/javascript" src="http://localhost:82/socket.io/socket.io.js"></script>
....
</html>

这是 socket.io 客户端所需的必要资源。所以资源加载在我的服务器/开发电脑上,而不是我的客户端电脑上。所以我尝试:

<html>
....
    <script type="text/javascript" src="http://192.168.1.2:82/socket.io/socket.io.js"></script>
....
</html>

现在它在任何一台电脑上都不起作用。我知道应该是

<script src="http://<uri:port>/socket.io/socket.io.js"></script>

正如 socket.io github 上所说,但我只想在本地网络上进行测试。

我也看过

<script type="text/javascript" src="http://cdn.socket.io/stable/socket.io.js"></script>

但我使用的是socket.io 0.8.4,所以上面的版本不起作用。

那么,如何在本地网络环境中将 socket.io 资源提供给客户端?或者你们知道我可以使用的提供 0.8.4 版本 socket.io 的网站吗?

注意:不存在防火墙问题。

【问题讨论】:

  • socket.io.js 将仅作为您的应用正在运行的同一台机器上的服务器,与您使用哪台机器访问它无关。
  • @Marcel M. 你在说什么?它们一直用于在线聊天应用程序
  • 我的意思是使用localhost 仅在服务器和客户端是同一台机器时才有效,无论端口如何
  • @MarcelM。我意识到,这就是它不起作用的原因,这就是为什么我要求人们提供一种在本地网络上运行 socket.io 的方法
  • 您收到什么错误信息?服务器上的 Web 根目录中是否存在“/socket.io/socket.io.js”?

标签: javascript html node.js socket.io


【解决方案1】:

替换

&lt;script type="text/javascript" src="http://localhost:82/socket.io/socket.io.js"&gt;&lt;/script&gt;

&lt;script src="/socket.io/socket.io.js"&gt;&lt;/script&gt;

【讨论】:

  • 只有当客户端和服务器在同一台机器上时才有效
  • 你真的试过了吗?因为这个答案对我来说是正确的。如果仍然无法正常工作,请检查 Chrome 开发者工具的网络或控制台选项卡,了解导致脚本请求失败的原因。
  • 这个答案不起作用。请阅读 github.com/LearnBoost/Socket.IO/wiki/How-do-I-serve-the-client,我的机器在同一个网络上但是是不同的机器,以上仅适用于“如果您的网络应用程序和套接字。 io 在同一个服务器和端口上”
  • 它在您链接的同一页面中这样说:“如果您的 Web 应用程序和 socket.io 在同一服务器和端口上,您可以简单地包括:&lt;script src="/socket.io/socket.io.js"&gt;&lt;/script&gt;"
【解决方案2】:

如果您使用同一主机的不同端口来服务 socket.io,您可以尝试使用

&lt;script&gt;document.write('&lt;script src="//'+ location.hostname + ':9998/socket.io/socket.io.js"&gt;\x3C/script&gt;')&lt;/script&gt;

这看起来像一个 hack,但它确实有效,只需将 9998 替换为您为 socket.io 提供服务的端口即可。

【讨论】:

    【解决方案3】:

    尝试让 socket.io 自动连接

    var socket = io.connect();
    

    这对我有用。

    【讨论】:

      【解决方案4】:

      对于索引:

          <script src="/socket.io/socket.io.js"></script>
      

      从客户端连接:

      var socket = io.connect('http://192.168.1.3:82', {'forceNew': true});
      

      这对我有用!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-07
        • 1970-01-01
        • 2017-03-27
        • 2020-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-07
        相关资源
        最近更新 更多