最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

socket.io连接到房间时出现问题,并且出现错误

网站源码admin16浏览0评论

socket.io连接到房间时出现问题,并且出现错误

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 。

发布评论

评论列表(0)

  1. 暂无评论