【问题标题】:socket.io client not receiving messagesocket.io 客户端未收到消息
【发布时间】:2017-07-30 23:22:26
【问题描述】:

当没有指定房间时,客户端会收到消息,但是当指定房间时,我无法在客户端上接收消息。

server.js

var socket = require('socket.io');
var mysql = require('mysql');
const path = require('path');
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = socket.listen(server);
var port = PORT;
io.on('connection', (socket) => {

  console.log('new connection made');

  socket.on('subscribe', function (room) {
    socket.room = room;
    socket.join(socket.room, function () {
      console.log('joined:' + room); // outputs joined: 1
      socket.on('send-message', (data) => {
            io.to(data.room).emit('message-received', data.message);
            console.log("sent to room:" + data.room);  // outputs sent to room: 1

      });
    });
  });
});

server.listen(port, function () {
  console.log('Server listening at port %d', port);
});

client.js

this.socket = io.connect('ws://IP:PORT');

this.socket.on('connect', () => {
  console.log("connection made"); // it output connection made in console
  this.socket.emit('subscribe', 1);
});
this.socket.on('message-received', (message: any) => {
   console.log(message);
});

在 server.js 上,我尝试了以下几个选项,但仍然无法在客户端发出“收到消息”:

// io.emit('message-received', data);
// io.to(data.room).emit('message-received', {
  //   room: data.room,
  //   message: data.message
// });
// io.sockets.in(data.room).emit('message-received', {
//   room: data.room,
//   message: data.message
// });
//io.broadcast.to(data.room).emit('message-received', data.message);

使用 angular 4 的最新 socket.io 库

【问题讨论】:

  • 有什么解决办法吗??

标签: node.js sockets websocket socket.io


【解决方案1】:

根据我在您的客户端和服务器端代码上看到的内容,我认为问题出在客户端代码中...

在您的服务器上,在“订阅”事件中,服务器也在侦听“发送消息”事件,您永远不会从客户端发出该事件!!

因此,如果您发出带有数据(这应该包括消息)作为参数的“发送消息”事件,那么只有服务器才会向客户端发出“收到消息”事件..

希望这有帮助!

【讨论】:

    猜你喜欢
    • 2020-02-01
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    • 2012-04-07
    • 2013-05-21
    • 1970-01-01
    • 2013-02-21
    相关资源
    最近更新 更多