Ответ 1
После небольшого беспорядка, пытающегося выяснить, какой из них дает IP-адрес клиента (веб-браузера), ответ:
ws._socket.remoteAddress
Или, если у вас есть доступ к req
через wss.on('connection', (ws, req) => {})
:
req.connection.remoteAddress;
Вы можете использовать это, например, в GeoIP locate, где пользователь подключается.
Edit:
Если вы используете Node за обратным прокси-сервером Nginx (или любым другим обратным прокси-сервером), вам может потребоваться использовать:
req.headers['x-forwarded-for'] || req.connection.remoteAddress
Примечание по безопасности. Если ваш сервер Node доступен напрямую, а также через обратный прокси, вы можете проверить remoteAddress
перед тем, как доверять x-forwarded-for
. Удаленным адресом должен быть ваш обратный IP-адрес. Там странный шанс, что кто-то может вызвать ваше обслуживание напрямую и обмануть x-forwarded-for
.