Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Голосовой сервис


Автор: x8m6 21.5.2010, 00:54
Нужно создать сервис для обмена  голосовыми сообщениями через интернет.  
К клиенту с Web-сервера должно загружатся Java приложение, которое читает поток с микрофона, формирует из него сообщение и передает серверу. Сервер читает заголовок сообщения и передает его другому клиенту, которому оно предназначено. 
Возник вопрос как реализовать взаимодействие между клиентом и сервером?
Сначала была идея сделать и клиента и сервера на сокетах. А сообщения передавать через tcp или udp -протокол. Но сервисом могут пользоватся клиенты, которые могут находится за NAT и тогда ничего же не выйдет так?
Поэтому я решил передавать сообщения все же через http. 
Тут также есть несколько вариантов:
1) На сервере сервлет на клиенте аплет/JWS-приложение. Обмениваются сериализованными объектами через URLСonnection.
2) На сервере вэб-сервис на клиенте JWS-приложение. Обмениваются через XML.
Какой из этих вариантов проще и эффективнее? Какие ещё можете предложить?
И можно ли как то организовать обмен сообщениями между клиентами минуя сервер(сервер в этом случае используется только для отправки служебной информации, голосовой контент передается только между клиентами) ? 

Автор: x8m6 21.5.2010, 02:40
Переместите в Java: Работа с Сетью если можно

Автор: amigooo 21.5.2010, 08:18
Цитата(x8m6 @  21.5.2010,  00:54 Найти цитируемый пост)
Сначала была идея сделать и клиента и сервера на сокетах. А сообщения передавать через tcp или udp -протокол. Но сервисом могут пользоватся клиенты, которые могут находится за NAT и тогда ничего же не выйдет так?
Поэтому я решил передавать сообщения все же через http. 


А HTTP что, по воздуху работает?

http://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C_OSI
http://ru.wikipedia.org/wiki/HTTP

Автор: COVD 21.5.2010, 16:00
Цитата

Поэтому я решил передавать сообщения все же через http. 

Правильно.

Цитата

1) На сервере сервлет на клиенте аплет/JWS-приложение. Обмениваются сериализованными объектами через URLСonnection.
2) На сервере вэб-сервис на клиенте JWS-приложение. Обмениваются через XML.

- нет принципиальной разницы.  XML может быть полезен, если кроме JWS предполагаются и другие,  не java - клиенты.

Цитата

Какой из этих вариантов проще и эффективнее?


"проще" реализовать поллинг - каждый клиент периодически опрашивает сервер на наличие сообшений. 
Возможно, "эффективнее" делать пуш с сервера. Для этого клиенты должны держать постоянные соединения. В http это имитируется "бесконечным ответом". 

Однако в поллинге, когда клиент регулярно обращается к серверу, физическое соединение по возможности не разрывается (http 1.1). И по сравнению с постоянным соединением здесь будет только дополнительный трафик, связанный с пересылкой http хедеров. Но зато регулярные запросы клиента упрощают организацию мониторинга на сервере - легко идентифицировать "умерших" клиентов.

Цитата

И можно ли как то организовать обмен сообщениями между клиентами минуя сервер

В общем случае никак, учитывая "клиенты, которые могут находится за NAT". На начальном этапе этим лучше не заморачиваться.

Вообще, вы описали типичный чат.

Автор: x8m6 22.5.2010, 00:14
Цитата

"проще" реализовать поллинг - каждый клиент периодически опрашивает сервер на наличие сообшений. 

Переодически? Это с каким промежутком? Мне нужно чтобы голос доставлялся с минимальными задержками. 

Цитата

Возможно, "эффективнее" делать пуш с сервера. Для этого клиенты должны держать постоянные соединения. В http это имитируется "бесконечным ответом". 

Можно пример кода?

И как вообще отправить объект серверу и наоборот через http?

Автор: x8m6 23.5.2010, 00:25
Вот случайно наткнулся на http://habrahabr.ru/blogs/webdev/79038/. По моему это то что надо. Что скажите?

Автор: COVD 25.5.2010, 17:16
Цитата

Мне нужно чтобы голос доставлялся с минимальными задержками.

Наверное, вы телефонию делаете, VoIP.

Добавлено через 12 минут и 34 секунды
Цитата

Вот случайно наткнулся на статью про ВэбСокеты. По моему это то что надо. Что скажите?

Если в выборе протокола главным является "всепроходимость", то используются стандартные возможности HTTP, то, что декларируется в спецификации. Обсуждаемая же технология - всего лишь предложение, "кардинальное расширение протокола HTTP".  Вот когда попадет в спецификацию, тогда и будет интересно.

Автор: x8m6 25.5.2010, 20:20
Цитата

Наверное, вы телефонию делаете, VoIP.

нет, не телефонию, просто аудиочат.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)