【问题标题】:Socket.io rooms is not getting messageSocket.io 房间没有收到消息
【发布时间】:2020-10-31 16:39:11
【问题描述】:

我在 nodejs-express 应用程序中有两个文件

first.pug

var socket = io.connect('//'+document.location.hostname+':'+document.location.port, {
  query: {
    token: "XXXXXX"
    }
});    

socket.on('connect', (s) => {
    console.log('connected!');
      socket.emit('join123', 'room1');
});

second.pug

var socket = io.connect('//'+document.location.hostname+':'+document.location.port, {
  query: {
    token: "XXXXXX"
    }
});    
socket.on('join123', function (data) {
  console.log("join.group========================"+data);
});    

Nodejs 服务器端

io.on('connection', (socket) => {
  console.log('a user connected');
  socket.join('join123');
});

当从first.pug 发送消息时,我在second.pug 中看不到任何消息

【问题讨论】:

    标签: express websocket socket.io


    【解决方案1】:

    second.pug 建立的 socket.io 连接永远不会收到消息,因为您的服务器永远不会向它发送消息。

    first.pug 的作用如下:

    1. 它会创建一个到您的服务器的 socket.io 连接。
    2. 当该连接成功时,它会向该服务器发送join123 消息。

    这是您的 socket.io 服务器所做的:

    1. 它监听连接的客户端。
    2. 当客户端连接时,它会将客户端放入join123 房间。
    3. 没有消息发送到任何连接的客户端。

    注意:对于客户端发送的join123 消息,服务器上没有侦听器,很可能那里有问题。

    second.pug 的作用如下:

    1. 它会创建一个到您的服务器的 socket.io 连接。
    2. 它侦听要发送给它的join123 消息。

    但是,没有任何东西会向 second.pug 发送 join123 消息,因此 second.pug 永远不会收到该消息。 first.pug 向您的服务器发送 join123 消息,但服务器从不将其发送给其他任何人。执行socket.join('join123') 的行为不会导致发送任何消息。它只是将套接字添加到该名称的房间。如果您希望 second.pug 获得 join123 消息,则必须在服务器上编写代码,将该消息实际发送到所有连接或以某种方式仅发送到 second.pug 连接。

    【讨论】:

    • @ManishKumar - 我不知道你的代码应该做什么,所以不知道有什么建议。
    • 两个将first.pug 的消息传递给second.pug 我将在服务器端执行的操作。 ?假设我只有这么多与发送接收消息相关的代码
    • @ManishKumar - 在您的服务器上,您需要监听 first.pug 发送给它的消息,然后当您收到该消息时,将消息发送到 second.pug 的套接字(如果second.pug 与 first.pug 同时打开)。
    • `socket.join('join123', () => { io.to('join123').emit('join123','一个新用户加入了房间'); }) ; socket.on('join123', (id, msg) => { socket.to(id).emit('join123', "msg1"); }); ` 在服务器端工作
    猜你喜欢
    • 2020-10-19
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 2017-09-27
    • 1970-01-01
    相关资源
    最近更新 更多