【问题标题】:React js Socket io not working in Local area network wifiReact js Socket io在局域网wifi中不起作用
【发布时间】:2016-06-30 13:31:59
【问题描述】:

所以我有一个在我的机器上运行的完成的 nodejs + socket.io + reactjs 项目。我可以在我的机器上打开不同的选项卡或浏览器并对其进行测试,以及它的工作原理。但是我想在局域网内的其他机器上测试它。当我通过其他机器上的 wifi 将它连接到我的网络 IP 地址时,我可以看到该页面。但是,socket.io 不工作。当我在 chrome(其他机器)中打开控制台时,这是我看到的错误:

GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=LMXV0Ufnet::ERR_CONNECTION_REFUSED

这是我的节点 app-server.js:

app.use(express.static('./public'));
app.use(express.static('./node_modules/bootstrap/dist'));
var server = app.listen(3000);
var io = require('socket.io').listen(server);

我该如何解决这个问题?还有什么是在生产中部署的推荐方式,以便 socket.io 可以工作。

【问题讨论】:

  • 另一台机器可能通过浏览器 url 指向您的网络服务器,但它在那里说它正在尝试连接到另一台计算机 localhost。您的客户端套接字连接还需要指向服务器所在的机器。这是打算在 LAN 上运行还是只是想测试一下?
  • @azium 你好,azium。不,我只是在我的局域网上测试它。对不起,我只是一个初学者。我该怎么做才能解决这个问题?我是否让 app/socket.io 监听网络 ip?

标签: node.js reactjs socket.io-1.0


【解决方案1】:

套接字应用程序有两个部分。位于某个单一服务器上的东西,以及分发给其他计算机的客户端代码,这些计算机需要连接回服务器以建立套接字连接。

您的服务器代码可能不需要更改。如果您能够通过某个 IP 地址访问它,则表明它正在正常服务。

假设您可以通过http://1.2.3.4:3000访问该网站

在您的客户端代码中的某处,您将拥有类似的内容:

import io from 'socket.io-client'
let serverUrl = 'localhost:3000'
let socket = io(serverUrl)

您需要将serverUrl 更改为您的服务器的IP 地址,所以http://1.2.3.4:3000

这是因为localhost从另一台计算机加载时指向那台计算机..但您需要将套接字连接回原始服务器。

【讨论】:

  • 是的!太感谢了。现在我对socket io和nodejs有了更多的了解。
猜你喜欢
  • 2019-12-10
  • 2022-07-07
  • 1970-01-01
  • 2020-05-17
  • 1970-01-01
  • 1970-01-01
  • 2021-08-04
  • 1970-01-01
  • 2021-06-05
相关资源
最近更新 更多