Sedbol
@Sedbol

Почему отправленное сообщение с сервера не видно в событии message?

wss.on('connection', function(ws,req) {
    const user=getUser(req.url);
    ws.onclient=user['viewer_id'];
    wss.clients.forEach(function each(client) {
        if (client.readyState === WebSocket.OPEN ){
            client.send(JSON.stringify({doubleClient:user['viewer_id']}));
                    }
    });
    if(MD5(user['api_id']+"_"+user['viewer_id']+"_"+appkey)!==user['auth_key'] || !user['auth_key']){
        console.info('Conn End')
        ws.close()
    }else{
        console.info("OK")
    }
    ws.on('close', function (data) {
        console.info('exit')
    });
    ws.on('message', function (data) {
        console.info(data)
        try{
         const userSend=JSON.parse(data);
         if(userSend===data.doubleClient){
             console.info('double')
         }

         console.info(userSend)
            
        }catch (e) {
            console.info('Не JSON')
            return false
        }
    })
});


Почему не приходит событие message на сервере? На клиент приходит все замечательно. А на сервере его не видно?
Как сделать что бы при событии connection отправленное сообщение было видно и на сервере в событии message? А не только на клиенте. А вообще задача такая. Если пользователь с данным ID уже открыто соединение то его закрыть и оставить только последние подключённое. Пример: пользователь подключен к сокету и работает с ним. Если такой-же ID входит на сервер закрывать другое соединений(По системе открытие двух вкладок в браузере если открываешь вторую то первая закрывается ) надо такое-же реализовать с сокет соединением. Если допустим пользователь открыл в другом браузере вкладку успешно авторизировался то такое-же первое соединение закрыть и оставить вновь подключенное.
  • Вопрос задан
  • 38 просмотров
Решения вопроса 1
joeberetta
@joeberetta
Читай: https://epdf.pub/google-for-dummies.html
Ваш вопрос в гугле намного проще ищется: websocket single session management

Вот собственно статья, в которой автор решает аналогичную проблему для своего проекта
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы