React js Socket io不能在局域网wifi中工作
React js Socket io not working in Local area network wifi
所以我有一个完成的 nodejs + socket.io + reactjs 项目正在我的机器上运行。我可以在我的机器上打开不同的选项卡或浏览器并测试它及其工作情况。但是我想在局域网内的其他机器上测试它。当我通过其他机器上的 wifi 将它连接到我的网络 ip 地址时,我可以看到该页面。但是,socket.io 不起作用。当我在 chrome(其他机器)中打开控制台时,这是我看到的错误:
GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=LMXV0Uf net::ERR_CONNECTION_REFUSED
这是我的节点应用-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 就可以工作了。
套接字应用程序有两个部分.. 存在于某处某台服务器上的东西,以及分发到其他计算机的客户端代码,这些计算机需要连接回服务器以建立套接字连接.
您的服务器代码可能不需要更改。如果您能够通过某个 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
从另一台计算机加载时指向 那台 计算机..但您需要将套接字连接回原始服务器。
所以我有一个完成的 nodejs + socket.io + reactjs 项目正在我的机器上运行。我可以在我的机器上打开不同的选项卡或浏览器并测试它及其工作情况。但是我想在局域网内的其他机器上测试它。当我通过其他机器上的 wifi 将它连接到我的网络 ip 地址时,我可以看到该页面。但是,socket.io 不起作用。当我在 chrome(其他机器)中打开控制台时,这是我看到的错误:
GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=LMXV0Uf net::ERR_CONNECTION_REFUSED
这是我的节点应用-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 就可以工作了。
套接字应用程序有两个部分.. 存在于某处某台服务器上的东西,以及分发到其他计算机的客户端代码,这些计算机需要连接回服务器以建立套接字连接.
您的服务器代码可能不需要更改。如果您能够通过某个 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
从另一台计算机加载时指向 那台 计算机..但您需要将套接字连接回原始服务器。