Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Создание голосового чата (http://www.flasher.ru/forum/showthread.php?t=202783)

yekaterina 09.08.2013 22:15

Создание голосового чата
 
Всем доброго вечера!

Стоит задача разработать интерфейс для голосового чата. В качестве RTMP сервера выбор сделан, а вот с клиентской частью оказалось не так просто начать (я в основном на JavaScript пишу / флеш только начала изучать, заранее прошу прощения).

Я так поняла, что вся работа идет c NetStream.publish(), где предварительно нужно приаттачить микрофон, и с NetStream.play(), где connection/play нужно сделать отдельно по каждому участнику дискуссии.

Как/где вы обычно храните список всех участников нужной дискуссии, ведь нужно знать адреса всех потоков?
Я вижу только след. возможность: при вхождении в дискуссию записывать в БД имя/адрес потока пользователя. Оттуда же и брать все адреса для прослушивания. Делать это все через Ajax.

Как уведомлять текущих собеседников о новом госте? Таже средствами polling/longpolling смотря информацию из БД не появилась ли новая запись?

Буду благодарна за любую информацию и советы каким путем идти и на что смотреть, а также за ссылки с примерами, которые могут помочь.

Спасибо.

KumoKairo 09.08.2013 22:59

Обычно поднимают небольшой бэкенд сервер, который хранит данные о подключенных в данный момент клиентах, их RTMP id и другую необходимую информацию, и этот же сервер соединяет клиенты друг с другом. Писать можно на чем угодно, я видел даже скрипты на питоне в 30 строчек. Тут больше зависит от "готового" опыта - кто-то писал на Java, кто-то на PHP, кто-то на C++, это не принципиально.
Когда мы экспериментировали с P2P соединениями, писали сервер на Java с использованием Netty.io библиотеки.

Где-то был хороший пример реализации видео и аудио чата через RTMP и скрипт на Python, добавлю ссылку если найду

Кстати сразу настраивайтесь на то, что у 30% клиентов запускаться приложение не будет из-за ограничений NAT и прочих запрещяющих вещей

yekaterina 12.08.2013 12:29

Спасибо за информацию. В данный момент собираюсь использовать Faye[1] в качестве канала и БД на сервере для хранения информации о подключениях.

[1]: faye.jcoglan.com

yekaterina 12.08.2013 21:55

Цитата:

Сообщение от okouser (Сообщение 1143570)
Не слышал о таком. Бегло пробежался. Такой вопрос:
А он разве поддерживает аудио?

Нет, это pub/sub[1], чтобы иметь возможность сообщить текущим участникам о новом сервером.

Может я все усложняю / или не так поняла, и есть возможность сделать проще? Попробую описать снова:

У RTMP сервера два основных акта с которыми флеш взаимодействует:
  • Публикация потока
  • Прослушивание потока
  1. Для того, чтобы подключиться к интересующей дискуссии нужно знать RTMP ID всех участников (чтобы на каждого создать по NetStream). Для этого я собираюсь хранить информацию на сервере в БД.
  2. Далее нужно сообщить всем участникам (флешу), о новом RTMP ID нового участника. Собираюсь делать с помощью JavaScript, опрашивая "периодически" сервер, а не появился ли кто новый.

Про "виртуальный мультикастинг" от okouser и "и этот же сервер соединяет клиенты друг с другом" от KumoKairo я поняла мало. :) Если бы были хоть какие-нибудь ссылки про информацию, было бы здорово.

[1]: http://en.wikipedia.org/wiki/Publish...scribe_pattern

yekaterina 14.08.2013 15:43

Цитата:

Сообщение от okouser (Сообщение 1143649)
Ссылок привести не могу, поскольку ничего подобного и не видел. Все реализации свои. Суть в том, что если есть доступ к коду сервера, можно переписать его таким образом, что отпадет необходимость в обращениях к БД, и сервер сам будет хранить и выдавать список всех имеющихся групп и участников и оповещать о появлении новых.
Кстати, в отличие от RTMFP у соединений в RTMP нет встроенных идентификаторов, поэтому идентификацию в вашем случае можно проводить только по url и названию потока.
Вариант с БД, если есть опыт, тоже совсем неплох. Правда, необходимость постоянной синхронизации с сервером может создавать дополнительные нагрузки на клиенте.
Кстати, неясно, а зачем JS, если клиент будет написан на AS.

Решила, что реализовать дизайн проще на HTML/JS. В качестве AS будет коробка с интерфейсом:
  • сделать publish себя
  • подключиться к такому-то потоку
  • mute себя

Общение с AS коробкой посредством JS (ExternalInterface). В итоге флеш занимается только стримом, для компиляции одного файла одна команда "as3compile Discussion.as -N", не нужно думать о Flash Studio. На стороне JS управление этой коробкой, comet с сервером, где вся информация о дискуссии.

Выглядит как изврат? )


Часовой пояс GMT +4, время: 11:10.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.