Прежде всего, JS не имеет встроенного свойства include / reference.
Таким образом, вы не можете просто объединить другой файл в другой файл. Но некоторые библиотеки достигают этого с помощью собственных письменных методов et c.
A JS, выполняемый на стороне клиента, не может получить доступ к локальным файлам. Хотя вы можете получить доступ к онлайн-загрузке файла в документ или к объекту. Таким образом, аналогичные функциональные возможности могут быть достигнуты с помощью сторонних сценариев.
Node.JS соответствует модульной системе Common JS и использует возможность доступа к локальной файловой системе.
Об индексе: вам не нужна карта, а карта очень похожа на стандартный объект, главное отличие в том, что это может быть порядок содержимого. Но так как все, что вам нужно, это объект словаря. Просто создайте простой объект. Затем вы можете испускать индекс цвета в любое время.
const colorIndex = {}
colorIndex[socketID] = color
Каждый может установить свой цвет на стороне клиента и отправить его на сервер, на каждом сервере обновлений должен обновлять каждый другой клиент о цвете.
Клиент не может знать других клиентов, в противном случае он не был бы в безопасности и не работает таким образом. Он работает больше, как будто вы звоните кому-то, а сервер - посредник, который связывает вас двоих.
Итак, создайте объект, храните идентификаторы сокетов, псевдонимы, любую другую необходимую вам информацию. Держите его на стороне сервера, в каждом сообщении отправляйте все вместе с сообщением.
const users = {}
io.on('connection', function(socket) {
users[socket.id] = {//Add new user
color:RandomColor()
}
socket.on('chat', function(message) {
let u = users[socket.id];//Get user from index
let data = {//Create a message package
user:(u.username)?u.username:"Guest", //name of the user if set
color:u.color,//color of user
message
}
io.emit('chat', data );//Send
});
socket.on('setColor', function(color) {//User can update color
users[socket.id].color = color
});
socket.on('setname', function(name) {//User can update username
users[socket.id].username = name
});
});
Так что вы, вероятно, поняли идею. Есть множество способов достижения.