Нежелательная отправка Socket.io отправителю с использованием socket.to ('<roomId>'). Emit ('message') - PullRequest
0 голосов
/ 20 июня 2019

Я новичок во всей теме веб-сокетов, поэтому, пожалуйста, поймите меня.

Я пытаюсь отправить сообщение с сервера всем людям в комнате, кроме меня.Я отправитель, поэтому я должен получать эти сообщения.

Но в любом случае Socket.io все еще отправляет эти сообщения мне.Я сделал все со ссылкой на документацию.

Проверьте мой код:сервер:

 const io = require('socket.io');

 // Sever is an instance of express.js server comming from outside
 const ioInstance = io(server);

  ioInstance.on('connection', socket => {
    const {
      request: { user }
    } = socket;
    const userExist = user || false;

    if (!userExist) {
      return;
    }

    socket.on('joinRoom', room => {
      socket.join(room);
    });

    socket.on('leavingRoom', listId => {
      socket.leave(`list-${listId}`);
    });


    updateItemState(socket);
  });
 };

const updateItemState = socket => {
  socket.on('item-busy', data => {
    const { listId } = data;

    console.log('item is busy');
    console.log(data);
    socket.to(`list-${listId}`).emit('item-busy', data);
  });
};

клиент:

ItemComponent.jsx

import io from 'socket.io-client';

 handleSocketConnection = () => {
    const {
      match: {
        params: { id: listId }
      }
    } = this.props;

    if (!this.socket) {
      this.socket = io();
    }

    this.socket = io();
    this.socket.on('connect', () =>
      this.socket.emit('joinRoom', `list-${listId}`)
    );

    this.socket.on('item-busy', data => {
      const { itemId, listId } = data;

      console.log('this item is busy');
    });
  };

Теперь я запускаю свое приложение на двух экземплярах браузера.У меня Chrome Canary на левой стороне, любой обычный Chrome от меня выделяет событие «занято».Я ожидаю получить console.log только на экземпляре Chrome Canary, а на обычном Chrome нет.

Но я получаю эти журналы в обоих браузерах. Что я делаю не так ???

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...