Получение socketId в запросе маршрута - PullRequest
0 голосов
/ 12 октября 2018

Как получить идентификатор сокета клиента в запросе маршрута.

Например,

io.on('connection',function(socket)
{
    var socketId = socket.id;
}

router.get('/',function(req, res){
{
    let socket = io.sockets.sockets[socketId];
    // How can I get the socketId of the client sending this request
}

Когда я объявляю socketId как глобальную переменную, он не работает, когда приложение используют несколько пользователей.

Помогло бы, если для этого предложено решение.Заранее спасибо

1 Ответ

0 голосов
/ 12 октября 2018

Вы можете добавить идентификатор в качестве строки запроса во время рукопожатия, сохранить этот идентификатор на сервере, и клиент должен каждый раз отправлять этот идентификатор на сервер для аутентификации.Например:

client.js:

const clientId = "some_unique_id";
const socket = io('http://localhost?id=' + clientId);

fetch('http://localhost?some_key=some_value&id=' + clientId).then(/*...*/);

server.js:

const io = require('socket.io')();

// this should be a database or a cache
const idToConnectionHash = {};

io.on('connection', (socket) => {
  let id = socket.handshake.query.id;

  idToConnectionHash[id] = socket.id;
  // ...
});

router.get('/',function(req, res){
  let socket = idToConnectionHash[req.query.id];
  // ...
}
...