Лучше создать 1 nodeJS-сервер и связать прослушивание событий для каждого , или я должен создать уникальный порт/сервер для каждого разговора между 2 пользователями. т.е.
Ни то, ни другое.
Вы можете легко создать приватный разговор между двумя пользователями с одним сервером прослушивания на одном порту и позволяет пользователям подключаться к серверу, а затем определить, какие другие пользователи хотят иметь частный разговор с.
- Пользователь идентифицирует себя на сервере с определенными полномочиями при входе в систему и подключении к серверу. Затем ваш сервер знает, к какому пользователю принадлежит какое соединение.
- Затем сервер может облегчить частный разговор между любыми двумя пользователями, просто разрешив userA передавать сообщения пользователю и типу/наоборот, но не позволяя кому-либо другому обращаться к этим сообщениям. Для каждого пользователя не требуется отдельный сервер. Не требуется настраиваемый порт. Вам нужна какая-то служба проверки подлинности пользователя, чтобы вы могли узнать, какой пользователь имеет определенный уровень доверия.
В этом socket.io demo chat server вы можете увидеть некоторые детали того, о чем вы просите.
Вот более подробное описание того, как это работает:
- UserA подключается к серверу и идентифицирует себя.
- UserB подключается к серверу и идентифицирует себя.
- UserC подключается к серверу и идентифицирует себя.
- UserA отправляет сообщение серверу, в котором серверу предлагается отправить личное сообщение пользователю.
- Сервер получает это сообщение от UserA и перенаправляет его на UserC.
- UserC получает личное сообщение от пользователяA.
- Сервер не хранит сообщение от UserA или когда-либо отправляет его другим пользователям (что делает его частным сообщением).
- Пользователь UserC может затем ответить на UserA, используя тот же механизм.
Примечание. Это требование почти любой схемы, в которой у вас есть как аутентификация пользователя, так и у вас есть идентификатор пользователя. Затем вам также придется выровнять это в пользовательском интерфейсе, чтобы данный пользователь мог определить, с кем в данный момент подключен пользователь, с которым они хотят общаться.
Я использую систему входа с уникальным адресом электронной почты для каждого пользователя. Когда пользователь успешно вошел в систему, создаются два сеанса PHP: один с уникальным идентификатором пользователя и один с уникальным адресом электронной почты. Когда пользователь регистрируется и нажимает на правую кнопку, отображается всплывающее модальное сообщение со списком подключенных пользователей узла/порта nodeJS. Я использую пользовательский интерфейс, как этот удивительный код: [link] (http://codepen.io/Momciloo/pen/bEdbxY) Так как информация хранится в сеансе PHP, как я могу определить в JavaScript (nodeJS), какой пользователь хочет отправить сообщение кому-то еще? – Piet
@Piet - вам понадобится доступ к сеансу в node.js. Я понятия не имею, можно ли получить доступ к сеансу PHP из node.js или нет. Это зависит от множества характеристик вашего развертывания и настроек cookie в сеансе. Если node.js-сервер был поддоменом PHP-сервера, то вы, вероятно, можете настроить cookie-файл PHP, чтобы разрешить доступ с сервера поддоменов node.js. Но даже тогда я не знаю, поможет ли это вам. Вы серьезно усложнили ситуацию, используя здесь несколько серверных архитектур и нуждающихся в совместном использовании логинов между ними. – jfriend00
@Piet - Можете ли вы сделать весь сервер только в одной системе, чтобы вам не приходилось делиться сеансами входа между серверами? socket.io может быть использован с PHP или node.js может сделать остальную часть вашего приложения. – jfriend00