连接到房间时出现问题,并且出现错误"/>
socket.io连接到房间时出现问题,并且出现错误
我在与socketIO通信时遇到问题。
第一个问题是我无法与另一个房间通信。而且我没有发现问题。
第二个问题是以下消息:index.js:83与'ws:// localhost:3000 / socket.io /?EIO = 3&transport = websocket&sid = PgUdXusyROLcKuieAAAI'的WebSocket连接失败:WebSocket握手期间出错:意外的响应代码:400
第三个问题与上一个相似,并且似乎同时触发:VM845:1 POSThttp://localhost:3000/socket.io/?EIO=3&transport=polling&t=MshuGZf&sid=fmIhjcRjS7yv-oeBAAAG400(错误请求)
第四个问题:MaxListenersExceededWarning:检测到可能的EventEmitter内存泄漏。添加了11个警告侦听器。->为此,我可以增加限制,但是我认为这不是一个好主意...
在上面您可以找到我的代码:
app.js
var server;
app.use((req, res, next) => {
const io = require('socket.io')(server);
var room;
io.on('connect', function(socket){
socket.on('room', function(room) {
socket.join(room);
console.log('Connected to room :' + room)
});
socket.on('chatMessage', function(msg){
console.log('here :' + room + " - " + msg)
socket.to(room).emit('chat message', msg);
});
});
next();
});
mongoose
.connect(MONGODB_URI)
.then(result => {
server = app.listen(process.env.PORT || 3000);
})
.catch(err => {
console.log(err);
});
在客户端:我的客户端js代码中输入的room和message的值似乎正常。
此行允许我在加载页面上确定套接字必须连接的房间:
socket.on('connect', function() {
socket.emit('room', room);
});
此部分似乎正常工作,因为我收到一条控制台消息,说帐户已连接到会议室。虽然这允许客户将消息发送给房间中的人。对于这一部分,我不知道为什么不触发app.js console.log('here :' + room + " - " + msg)
的任何线索。
socket.emit('chatMessage', messageInput);
我希望说明足够清楚...如果需要,我可以发布其他内容,但我认为这些是必不可少的部分。
回答如下:为每个发送到服务器的请求创建一个套接字服务器,从中间件中删除套接字服务器实现。您应该单独实现套接字服务器。
var server;
mongoose.connect(MONGODB_URI).then(result => {
server = app.listen(process.env.PORT || 3000);
// socket server init
socket_server(server);
}).catch(err => {
console.log(err);
});
function socket_server(server) {
const io = require('socket.io')(server);
var room;
io.on('connect', function (socket) {
socket.on('room', function (room) {
socket.join(room);
console.log('Connected to room :' + room)
});
socket.on('chatMessage', function (msg) {
console.log('here :' + room + " - " + msg)
socket.to(room).emit('chat message', msg);
});
});
}
我建议您通过socket-io docs 。
更多推荐
socket.io连接到房间时出现问题,并且出现错误
发布评论