У меня есть 2 типа пользователей, подключенных к Socket
, 1. Администратор и 2. Пользователь
Я хочу emit
некоторые event
только для администратора connections
. При подключении к сокету я отправляю query
, как показано ниже
var connectionOptions = {
"force new connection" : false,
"reconnection": true,
"reconnectionDelay": 2000,
"reconnectionDelayMax" : 60000,
"reconnectionAttempts": "Infinity",
"timeout" : 10000,
"transports" : ["websocket"],
"query": {
"is_admin": true,
"token": TOKEN,
}
}
var socket = require('socket.io-client')(process.env.SOCKET, connectionOptions);
На стороне сервера, у меня есть функция для проверки токенов администратора и пользователя и подключения их к Socket
.
io.use((socket, next) => {
let query = socket.handshake.query;
if(query.is_admin) someAdminAuth(query.token);
else someUserAuth(query.token)
}).on('connection', (socket) => {
});
module.exports.sendSocket = (event_name, data) => {
let str = io.sockets.query;
console.log(str, "str")
io.sockets.emit(event_name, data);
}
Теперь, где-то я буду излучать функцию NOTIFY_ADMIN
, и все connections
получат событие. Но я не хочу уведомлять всех connections
. Я хочу Pu sh event
только для пользователей, которые имеют is_admin: true
. как я могу это сделать?
Я могу listen
на событие в frontend
, вместо этого, если я могу только p sh, сообщение с указанием c категории соединения будет лучше.