反应js套接字io不工作在局域网wifi

所以我有一个完成的工作在我的机器上的nodejs + socket.io + reactjs项目。 我可以在我的机器上打开不同的选项卡或浏览器,并对其进行testing和工作。 但是我想在我的局域网内的其他机器上testing它。 当我通过其他机器上的无线networking连接到我的networkingIP地址,我可以看到页面。 但是,socket.io不起作用。 当我打开控制台(其他机器),这是我看到的错误:

GET 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); 

我该如何解决这个问题? 还有什么build议的方式来部署在生产中,使socket.io将工作。

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

您的服务器代码可能不需要更改。 如果您能够通过某个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指向计算机..但是您需要使套接字连接回到原始服务器。