У меня есть такая структура:
Сокет на стороне сервера:
var fs = require('fs');
var pkey = fs.readFileSync('../../../../etc/letsencrypt/privkey.pem');
var pcert = fs.readFileSync('../../../../etc/letsencrypt/cert.pem')
var options = {
key: pkey,
cert: pcert,
requestCert: false,
rejectUnauthorized: false
};
var app = require('https').createServer(options);
var io = require('socket.io')(app);
var Redis = require('ioredis');
var redis = new Redis();
app.listen(8443, function () {
console.log('Server is running!');
});
redis.subscribe('resumo');
redis.on('message',function(channel,message){
console.log(channel, message);
message=JSON.parse(message);
console.log(channel+':'+message.event, message);
io.emit()
});
function handler(req, res) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.writeHead(200);
res.end('');
}
var totalUsers = 0;
io.on('connection', function (socket) {
totalUsers++;
console.log('a user connected');
io.emit('users', totalUsers);
socket.on('disconnect', function(){
totalUsers--;
io.emit('users', totalUsers);
console.log('user disconnected');
});
socket.on('exit', function(channel){
var teste = socket.eventNames();
console.log('desconectado de: '+teste);
});
socket.on('entrar', function(channel){
socket.join(channel);
console.log('conectado em: '+channel);
});
});
redis.psubscribe('*', function (err, count) {
//
});
redis.on('pmessage', function (subscribed, channel, message) {
io.emit(channel, message);
});
На стороне клиента:
var socket = io.connect('https://mywebsite.com:8443/');
socket.on('u_123', function (data) {
data = JSON.parse(data);
window[data['function']](data);
});
И я публикую на таких каналах, какэто:
Redis::publish('u_123', json_encode([
'data' => [somedata]
]));
Мне нужно проверить, есть ли кто-то, подключенный к этому каналу 'u_123' на контроллере laravel, это возможно?Как я мог это сделать?Я действительно плох в части JavaScript, поэтому у меня много трудностей с этим ...