Показать сообщение отдельно
  #6 (permalink)  
Старый 19.04.2016, 10:43
Новичок на форуме
Отправить личное сообщение для stonecone Посмотреть профиль Найти все сообщения от stonecone
 
Регистрация: 29.03.2016
Сообщений: 3

в общем я сделал так:
1. создал объект call (звонок), это по сути связка "JS клиент подключенный к websocket" (храню в свойстве сокет) ---- "id звонка который запросил клиент" (храню в свойствах actionid и uniqueid)
2. создал массив clients, куда складываю объекты из п. 1.
3. при инициации клиентом звонка (мне клиент не нужен на стадии подключения, я с ним не собираюсь общаться помимо звонков) создаю объект из п. 1 и кладу его в массив клиентов. При отключении клиента удаляю объект звонка из массива. Тут все инициируется со стороны вебсокетов, со стороны js клиента.
4. при окончании звонка (их неск вариантов) отправляю статус JS клиенту и опять же удаляю объект звонка из массива. А тут вызов происходит со стороны AMI, т.е. есть со стороны астериска. Всё.
у тебя это будет выглядеть как-то так
var app = require('http').createServer(handler)
var io = require('socket.io')(app);
// создай и подключи класс Клиент вот тут Илья все классно объясняет: [url]http://www.youtube.com/watch?v=g740J-RyoR4&index=5&list=PLDyvV36pndZFWfEQpNixIHVvp191Hb3Gg[/url] 
var сlient = require(./client);
// массив с твоими клиентами, можно тут хранить имена, сокеты и айди если надо, сам нарисуй объект со свойствами которые тебе нужны
clients = [];
function handler (req, res) {
/*тут разный код*/
}
io.on('connection', function (socket) {
 // при подключении создаешь объект Клиент и кладешь его в массив клиентов
 client = new client.Client(ws);
/*тут разный код*/
});
var timer = setInterval(function(){
/*как отсюда вызвать socket.emit?*/
// тут шлешь своим клиентам сообщения если я тебя правильно понял
clients.forEach(function(client, i, clients){
    msg = {
        type: "status",
        status: "originatefailed"
    };
    ws.send(JSON.stringify(msg));
});
});


правда у тебя socket.io, я использовал ws, но суть та же - нужно хранилище клиентов-сокетов
на лучшее решение не претендую, могут быть ошибки в коде, но идея думаю ясна
Ответить с цитированием