Привет, вот что вы можете сделать:
Индекс. Js (на стороне сервера)
var express = require('express')
var socket = require('socket.io')
//App setup
var app = express();
var server = app.listen(8000, function(){
console.log('listening to requests on port 8000')
});
//static files
app.use(express.static('public'));
//socket setup
var io = socket(server);
var wordList = ['cat', 'dog', 'skunk'];
var selectedWord = wordList[Math.floor(Math.random() * wordList.length)];
// when you run server,
// you will have a selectedWord
//listening for connection event from browser on
// connection fires callback function (backend)
io.on('connection', function(socket) {
console.log('made socket connection', socket.id);
// everytime someone connecteds send to single user what selectedWord
// currently is
socket.emit('colorChange', selectedWord);
//Listening for colorchange (click event from front end)
socket.on('colorChange', function(){
// when someone wants to change
selectedWord = wordList[Math.floor(Math.random() * wordList.length)];
// we are gonna select a new one and send it to everyone
io.sockets.emit('colorChange', selectedWord);
// so on button.js where you listen this event
// it's gonna set new randomly selected word for every user :=)
})
});
кнопка. js Клиентская сторона
// Make connection (socket for front end)
var socket = io.connect('http://localhost:8000');
//Accessing DOM
let td1 = document.getElementById("td1")
//Send click to server
td1.addEventListener('click', function(){
socket.emit('colorChange');
});
//Listen for events from back end to execute on front end
socket.on('colorChange', function(word) {
td1.style.color = "red"
td1.innerHTML = word;
});
Изменить: есть также другой способ, который вы можете создать со стороны внешнего интерфейса и отправить его на сервер, и транслировать всем, также приемлемо для вашего примера, я предполагаю:)