Отправка информации всем клиентам в комнате

dex35

New Member
Здравствуйте.
Появилась необходимость отправить информацию всем клиентам в разрезе комнаты. Полистав документацию, увидел метод sendData, но как понял, в roomApi метод не предусмотрен? Можно ли как-то отправить информацию клиенту или сразу всем клиентам помимо sendMessage?
 

Max

Administrator
Staff member
Здравствуйте.
В соседней теме ответили.
Создаем собственный формат объекта передачи данных и сериализуем его в текст.
При получении десериализуем.
 

dex35

New Member
Здравствуйте.
В соседней теме ответили.
Создаем собственный формат объекта передачи данных и сериализуем его в текст.
При получении десериализуем.

Я правильно понимаю, что REST хук вызывается в момент отправки команды через WS?
JavaScript:
Flashphoner.getSessions()[0].sendData(JSON.stringify({'name': 'value'}))
Т.к. например, в данном случае я получаю ошибку Internal Server Error
1615815254601.png
 

Max

Administrator
Staff member
Ошибка скорее из-за того, что передается строка JSON вместо объекта.


Так должно заработать:
Code:
Flashphoner.getSessions()[0].sendData({name:"John", lastName:"Doe"});
JSON.stringlify() делать не нужно потому что он вызывается ниже на объекте.

Я правильно понимаю, что REST хук вызывается в момент отправки команды через WS?
Да, в данном случае вызывается REST хук /onDataEvent когда команда "sendData" доходит до сервера по вебсокету.

Что именно ходит по вебсокету можно увидеть в Chrome браузере

Что именно ходит в REST хуках можно увидеть сниффером (открыть pcap файл в wireshark). Покажет только если хуки ходят через http и не шифруются через https
Code:
tcpdump -i any -B 10000 -w log.pcap
 

dex35

New Member
JSON.stringlify() делать не нужно потому что он вызывается ниже на объекте.
Изначально пробовал без преобразования, но столкнулся с той же ошибкой, для верности перепроверил еще раз:
1615876304774.png

Не подскажете, почему такое может происходить?
 

Max

Administrator
Staff member
Не подскажете, почему такое может происходить?
Необходимо смотреть логи сервера /usr/local/FlashphonerWebCallServer/logs/server_logs/flashphoner.log
Если Вы пытаетесь таким образом отправить сообщение в комнату, вызывая непосредственно метод sendData, причина, скорее всего, в том, что необходимо соблюдать определенный формат, например
Code:
{command: "sendMessage", options: {roomConfig: {name: "room-c83494"}, to: "user2", text: "custom_payload"}}
Либо, если используется RoomApi
Code:
        var participants = room.getParticipants();
        for (var i = 0; i < participants.length; i++) {
            participants[i].sendMessage(custom_payload);
        }
В обоих случаях, custom_payload - это Ваша структура
Code:
{name:"John", lastName:"Doe"}
сериализованная, как описано здесь
 

dex35

New Member
Необходимо смотреть логи сервера /usr/local/FlashphonerWebCallServer/logs/server_logs/flashphoner.log
Спасибо, гляну.

Правильно понимаю, что в разрезе roomApi лучше использовать именно метод sendMessage? Но при этом, данные передаваемые в методе должны передаваться именно в виде строки? Т.к. передавая напрямую объект js получаю так же, Internal Server Error.
 

Max

Administrator
Staff member
Правильно понимаю, что в разрезе roomApi лучше использовать именно метод sendMessage? Но при этом, данные передаваемые в методе должны передаваться именно в виде строки?
Да, метод принимает строку и всю ее считает полезной нагрузкой.
 
Top