我的socket.connected总是false,也不能发送和接收消息。
app.js
var app = require('./config/server');
var http = require('http').Server(app);
var io = require("socket.io")(http);
http.listen(80, function(err)
{
console.log(err);
console.log('Server client instagram_clone_v01 online');
});
io.sockets.on('connection', function (socket)
{
console.log("new user connected");
});
字符串
服务器端
var sockets = io();
sockets.on('connection', function ()
{
console.log("connected");
sockets.emit("newPhoto");
});
型
客户端
const socket = io.connect("http://localhost:80");
console.log(socket.connected);
socket.on('error', function()
{
console.log("Sorry, there seems to be an issue with the connection!");
});
socket.on('connect_error', function(err)
{
console.log("connect failed"+err);
});
socket.on('connection', function ()
{
console.log("connected");
socket.on('newPhoto',function()
{
load_posts();
});
});
型
没有一条“on”是received,甚至连“error”都没有。我怎么才能让它工作,请?
3条答案
按热度按时间au9on6nz1#
我在本地检查了你的代码。
所以问题是你正在检查:
.on('connection',...)
当它应该是.on('connect', ...)
时试试这个修复方法:
字符串
bcs8qyzn2#
当我使用React前端和Node Express后端构建基本的socketio应用程序时,我在v4中遇到了类似的问题。在典型的Node/React设置中,你的react应用程序将位于端口3000上,而你的express服务器将位于端口5000上,根据文档,这导致你需要设置一个开放的CORS策略,以在端口5000上启用与socketio服务器的连接。
从Socket.IOv3开始,您需要显式启用跨域资源共享(CORS)。(docs)
我只是确保我的socketio定义是这样的:
字符串
我可以在useEffect里用我的react应用程序连接。之后我看到了所有预期的日志。
型
ftf50wuq3#
对于运行虚拟设备的用户来说,这是一个常见但令人困惑的错误,其中URL必须是主机的本地IP或10.0.2.2
确保你的socket连接沿着上面的定义:
字符串