Я использую NodeJS, socket.io и express для создания приложения, и мне интересно, как определить, какой сокет (id/user) находится на каком маршрутизаторе? Например, у меня 10 пользователей на моем сайте, и у меня есть 3 маршрута:/home,/about,/contact. Как узнать, какой пользователь находится на маршрутизаторе?Узел js несколько маршрутов get socket
ответ
Во-первых, чтобы знать «какого пользователя», вам понадобится система с сеансами и куки-файлы, чтобы идентифицировать конкретного пользователя каждый раз, когда они делают другой запрос. Passport.JS делает это очень просто.
Во-вторых, чтобы разделить одного и того же пользователя между экспресс-маршрутом, а обработчик Socket.io потребует обмена информацией о сеансе между ними. Для Passport.js есть socket.io-passport, который делает это.
Наконец, когда на стороне клиента Socket.io инициирует запрос на подключение к серверу, io.connect()
он устанавливает ссылающейся заголовок запроса к текущему URL, которые могут быть доступны на стороне сервера с socket.request.headers.referer
со всеми что на месте вы, наконец, быть в состоянии сказать, какой пользователь на какой маршрут:
app.get('/about', function(req, res, next){
// req.user is on '/about' path
});
var URL = require('url');
io.on('connection', function(socket) {
var user = socket.request.user;
var path = URL.parse(socket.request.headers.referer).path;
// user is on -> path
});
Я бы дал вам несколько upvotes, но я могу только один. :) Спасибо за ваш обновленный ответ! Пожалуйста, проверьте мои другие вопросы node.js :) –
- 1. Узел js socket описание
- 2. узел js, настройка версий маршрутов
- 3. узел js socket io chat
- 4. Узел js get js socket.io
- 5. Узел/Socket IO Несколько игроков
- 6. Клиентский узел Android Socket js server
- 7. Узел JS OR Express JS HTTP GET Request
- 8. Несколько приложений в экспресс js (узел js)
- 9. Узел JS Get stop работает случайным образом
- 10. узел js Не удается GET "/ router"?
- 11. Узел JS Ошибка запроса GET с HPE_INVALID_HEADER_TOKEN
- 12. Узел Js .get() требует функции обратного вызова
- 13. Несколько маршрутов в разных шаблонах angular2 JS
- 14. Android-сокет io клиентский узел js can not get values
- 15. Socket io get не определен
- 16. cant get socket.io для опроса (узел, js, express, ejs, socket.io)
- 17. включает файл js в узле файла маршрутов (не узел mudule)
- 18. get socket from Stream
- 19. Узел JS с Socket IO Winston Logger не выводит debug
- 20. Узел js & socket io cookie значение не существует
- 21. Laravel - несколько маршрутов
- 22. Узел маршрутов для аутентифицированной зоны?
- 23. Как добавить несколько страниц в узел js
- 24. Несколько клиентов проводки данных в узел JS
- 25. Узел js url запрашивается несколько раз
- 26. Узел Js MongoDB добавить несколько datalines
- 27. Telegram - Узел. Js обрабатывает несколько обновлений.
- 28. Узел js - как обрабатывать несколько асинхронных задач
- 29. Несколько маршрутов в винограде
- 30. несколько маршрутов в одном маршруте :: get() call Laravel 4
вы также использовать что-то вроде (Socket.io паспорта), чтобы связать пользователя в Expres s сеанс с Socket.io? потому что это будет тема сама по себе – laggingreflex
В настоящее время я изучаю, как работает все «javascript на сервере» (node.js). У меня есть php-фон, и я не так много знаю об этом. Да, я слышал о паспорт.js, но пока не знаю, как он работает. Мне нужна регистрация/логин на моем сайте, но я еще не знаю, как я это сделаю, и что такое «лучшая» практика. –
checkout обновленный ответ, надеюсь, он поможет – laggingreflex