Henry Okonkwo
Henry Okonkwo

Reputation: 373

sender not recieving message sent on socker.io

I am working on a node project using socket.io but when a message is emitted it goes to the sender only and not to other connected clients. please what could I be doing wrong?

this my socket server and client code below.

node - index.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});
  });
});
...

client - socket.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>
...

Upvotes: 0

Views: 23

Answers (1)

1baga
1baga

Reputation: 338

To send to everyone in the channel use

socket.broadcast.emit()

this will broadcast the message.

Use this cheatsheet for reference next time.

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

Upvotes: 1

Related Questions