Логика такая: Клиенты подключаются. Один из клиентов нажимает представиться. Вводит свое имя. Данному клиенту выводится сообщение "Привет {{ Имя пользователя }}". Все остальные клиенты получают сообщение "Привет от {{ Имя пользователя }}".
Но при отправке сообщения (После того как клиент представится), его получает только последний подключенный клиент, хотя по идеи должны получать все кроме отправителя (broadcast).
В чем может быть проблема? И как ее решить?
А вот эта вот часть вообще не отрабатывает:
client.emit("hello", {
hello: `Привет ${data}!`
});
// server.js
const app = require("express")();
const http = require("http").Server(app);
const io = require("socket.io")(http);
app.use(require("express").static(__dirname + "/public"));
io.on("connection", client => {
client.on("message", data => {
console.log(data);
client.emit("hello", {
hello: `Привет ${data}!`
});
client.broadcast.emit("hello", {
hello: `Привет от ${data}!`
});
});
});
http.listen(3000);
// client.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="/socket.io/socket.io.js"></script>
</head>
<body>
<button>Представьтесь</button>
<script>
const socket = io.connect("http://localhost:3000");
socket.on("hello", data => {
alert(data.hello);
});
const button = document.querySelector("button");
button.addEventListener("click", event => {
const name = prompt("Как вас зовут?", "Гость");
if (name) {
socket.emit("message", name);
}
}, false);
</script>
</body>
</html>