React js Socket io无法在局域网wifi中工作

时间:2016-06-30 13:32:00

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

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

  

获取http://localhost:3000/socket.io/?EIO=3&transport=polling&t=LMXV0Uf net :: 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可以工作。

1 个答案:

答案 0 :(得分:2)

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

您的服务器代码可能不需要更改。如果您能够通过某个IP地址与其联系,这意味着它可以正常投放。

我们假设您可以通过http://1.2.3.4:3000

访问该网站

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

-Dcatalina.home=...

您需要将import io from 'socket.io-client' let serverUrl = 'localhost:3000' let socket = io(serverUrl) 更改为服务器的IP地址,因此serverUrl

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