Как назначить уникальный идентификатор для веб-сокета - PullRequest
0 голосов
/ 15 ноября 2018

Используя socket.io в среде Node / Express, возможно ли однозначно назначить, скажем, чей-либо идентификатор входа, при установлении соединения через сокет?

Обновлено

В моем файле app.js (экспресс) у меня есть следующий код для доступа к логину из заголовков запросов:

const express = require('express');
const app = express();

app.use(function(req, res, next){        
  let login = req.header('login');
  next();
});

Мне нужен способ, позволяющий транслировать сообщения с использованием этого уникального идентификатора (логина) через socket.io

1 Ответ

0 голосов
/ 15 ноября 2018

ОК, я предполагаю, что у вас есть возможность выяснить, какой это пользователь, из файла cookie для входа.Поскольку вы не показываете нам, как настроить cookie, вам придется написать собственный код, чтобы сделать это.

Когда происходит событие socket.io connection, вы можете получить к cookie отначальный запрос соединения socket.io в socket.request.headers.cookie.Предположим, у вас есть функция с именем getUserFromCookie(), в которую вы передаете cookie-файл для входа, и она возвращает идентификатор пользователя, и мы предполагаем, что ваш cookie-файл для входа называется «login».Затем вы можете написать код, подобный следующему:

io.on('connection', socket => {
    let userId = getUserFromCookie(socket.request.headers.cookie);
    // join user to a room with the name of their userId
    socket.join(userId);
});

Затем, в другом месте кода вашего сервера, куда вы хотите отправить сообщение определенному userId, вы можете сделать это, просто выполнив следующее:

io.to(userId).emit("someMsg", someData);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...