所以我有一个完成的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可以工作。
答案 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
从另一台计算机加载时指向那台计算机..但您需要将套接字连接回原始服务器。