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 входит на сервер закрывать другое соединений(По системе открытие двух вкладок в браузере если открываешь вторую то первая закрывается ) надо такое-же реализовать с сокет соединением. Если допустим пользователь открыл в другом браузере вкладку успешно авторизировался то такое-же первое соединение закрыть и оставить вновь подключенное.