В настоящее время я начинаю работать с node.js, а в качестве первого небольшого проекта решили закодировать небольшое приложение чата. Я использую socket.io
и следил за учебником чата на http://socket.io/get-started/chat/. Теперь я хочу расширить скрипт, но я застрял.Отправка/передача сообщения одному конкретному клиенту с использованием node.js asocket.io
Я не понимаю, как (или если вообще) socket.io управляет всеми подключенными клиентами на стороне сервера. Я могу использовать функцию io.emit
для отправки сообщения всем подключенным пользователям. Но что, если я хочу отправить сообщение одному конкретному пользователю?
Я мог бы, конечно, «подделать» его, отправив сообщение всем клиентам, а затем на стороне клиента проверить идентификатор и т. Д. И обработать сообщение только в том случае, если есть совпадение. Но это все равно отправит сообщение всем, и его можно легко обойти пользователями с минимальными знаниями JS.
«Фильтрация»/«таргетинг» должно происходить на стороне сервера по соображениям безопасности. Но я не вижу/не понимаю, как (или если вообще) socket.io действительно управляет всеми клиентскими соединениями. Есть ли способ получить список всех текущих подключенных клиентов? Можете ли вы взаимодействовать со всеми подключенными клиентами в цикле? Можете ли вы назначить пользовательские идентификаторы/имя для соединений? И - как практическое приложение - можете ли вы затем отправить/отправить сообщение одному подключенному пользователю?
Как позже найти этот socket.id и ссылки на нее, когда она потребность является гораздо более сложным понятием. –
сохранить его в базе данных с именем пользователя – Subham