Я строю сервер, используя Node.js. Я храню объекты, представляющие своих пользователей, в ассоциативном массиве, и теперь индекс этих объектов является идентификатором сокетов этого соединения. Используя библиотеку Socket.io, я получаю ее, просто делая socket.id, поэтому для каждого обработчика, который заботится о моих запросах, я всегда могу узнать, какой пользователь сделал запрос.Двойная индексация в ассоциативном массиве
На стороне клиента каждый пользователь имеет идентификаторы подключенных пользователей (отличных от идентификаторов сокета). Проблема возникает, когда у меня есть обработчик, который используется для отправки сообщения от пользователя другому, я делаю пример:
Пользователь A должен отправить сообщение пользователю B, мой протокол указывает сообщение как-то вроде это:
MSG_KEY:{MSG:'hello world',USER_ID:'12345'}
стороне сервера у меня есть обработчик, который прослушивает «MSG_KEY» и, когда сообщение посылается оно выполняется и с помощью socket.id я могу восстановить, который сделал запрос, но проблема заключается в том, что Мне нужно получить также пользователя B, но на этот раз его USER_ID. Я не хочу использовать socket.id, чтобы избежать спуфинга сеанса.
Сначала я подумал об индексировании в моем массиве пользователей, указав их как из socket.id, так и из идентификатора пользователя.
Мой вопрос: это хорошая идея? Содержит ли socket.io способ упростить это?
FWIW, в JavaScript, термин «ассоциативный массив» обычно не используется (просто чтобы избежать путаницы с массивами - это весело, потому что стандартные массивы JavaScript на самом деле не массивы, но неважно). «Карта» или просто «объект» - это обычный термин. –
Спасибо за разъяснение – MastErAldo
Просто уточните: есть ссылка [http://www.photo.ru/posts/16572324/edit] под вашим вопросом, и вы можете использовать ее для редактирования своего сообщения в случае необходимости. Другие пользователи тоже могут это сделать, поэтому я добавил, что часть, о которой вы сказали, отсутствует. И я не добавил часть «спасибо», потому что здесь здесь считают ненужным шум. – bfavaretto