2016-04-13 5 views
-2

В настоящее время приложение для чата socket.io разрешает только 1 пользователю на ip, что означает, что два человека в одном доме или сети хотят использовать чат, только один из них сможет.Узнать частный ip при использовании node/socket.io?

Есть ли способ узнать, что у частного ip-пользователя есть, кроме того, что это общедоступный ip, который я уже знаю?

+0

Я был бы признателен за причину падения, поскольку мой вопрос разумный. – jason

+0

предположительно, все они будут проходить через один шлюз. Без запуска кода на клиенте, я думаю, вам будет трудно понять IP-адрес машины, на которой они находятся. Тем не менее ... ваши пользователи в среде виртуальной машины? Вы запрашиваете HOST ip в этом сценарии? Я не голосовал за вас, но вы могли бы более подробно рассказать о своих потребностях и опубликовать код, который у вас есть. – akaphenom

ответ

0

Предполагая, что ваше приложение для чата - это Javascript, который запускается в браузере, затем «Нет», у вашего сервера нет способа узнать, что такое частный IP-адрес конечного пользователя. Если ваше приложение для чата было родным приложением, ваше собственное приложение для чата могло бы получить локальный частный IP-адрес и отправить его на сервер. Но это невозможно сделать из просмотра без встроенных плагинов кода.

Браузер не предоставляет возможности для Javascript для получения частного IP-адреса, поэтому ваш чат-приложение не сможет отправить его на ваш сервер. И, конечно, нет никакого способа, чтобы сервер мог узнать частный IP-адрес сам по себе.

Вы можете использовать файлы cookie для обнаружения нескольких окон чата в том же браузере, которые открываются сразу (cookie первое соединение, а затем искать любые другие входящие соединения с одним и тем же файлом cookie). Но вы не можете предотвратить использование браузером нескольких браузеров.

Обычный способ справиться с этим - потребовать учетную запись и войти в эту учетную запись и одновременно применять только один логин на одну учетную запись и требовать уникальные адреса электронной почты или даже проверенные номера кредитных карт на одну учетную запись, чтобы препятствовать людям делать лоты счетов. Конечно, есть еще способы обойти это (несколько почтовых ящиков или несколько кредитных карт), но этого достаточно, чтобы остановить многих и предотвратить крупномасштабное злоупотребление. В общем, вы должны разработать свою услугу, поэтому, если кто-то это сделает, это, откровенно говоря, не проблема.

Смежные вопросы