отправитель не получает сообщение, отправленное на socker.io - PullRequest
0 голосов
/ 26 апреля 2020

Я работаю над проектом узла с использованием socket.io, но при отправке сообщения оно отправляется только отправителю, а не другим подключенным клиентам. пожалуйста, что я мог сделать неправильно?

это мой сокет сервер и код клиента ниже.

узел - индекс. js

...
io.on("connection", (socket) => {
  //When a new user join
  socket.on("joined", (data) => {
    socket.emit("welcome", "Welcome to test");
  });

  //on send
  socket.on("send_message", (data) => {
    const {name, message} = data;
    socket.emit("recieve_message", {name, message});
  });
});
...

клиент - сокет. html

...
<body>
    <form action="">
        <input id="name" autocomplete="off" />
        <input id="message" autocomplete="off" /><button>Send</button>
    </form>
    <ul id="messages"></ul>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.0/socket.io.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script>
    <script>
        var socket = io.connect('http://localhost:3005');

        $('form').submit(function () {
            socket.emit('send_message', {name: $('#name').val(), message: $('#message').val()});
            $('#message').val('');
            return false;
        });

        socket.emit('joined');

        socket.on('welcome', function (msg) {
            $('#messages').append($('<li>').text(msg));
        });

        socket.on('recieve_message', function (msg) {
            $('#messages').append($('<li>').text(`${msg.name} - ${msg.message}`));
        });

    </script>
</body>
...

1 Ответ

1 голос
/ 26 апреля 2020

Чтобы отправить всем на канале, используйте

socket.broadcast.emit()

, это передаст сообщение.

Используйте эту таблицу для справки в следующий раз.

https://socket.io/docs/emit-cheatsheet/

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