Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Голосовой сервис, организация обмена сообщениями 
:(
    Опции темы
x8m6
Дата 21.5.2010, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 11.12.2008

Репутация: нет
Всего: нет



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


Бывалый
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 11.12.2008

Репутация: нет
Всего: нет



Переместите в Java: Работа с Сетью если можно
PM MAIL   Вверх
amigooo
Дата 21.5.2010, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.7.2007

Репутация: нет
Всего: нет



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


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

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

PM MAIL   Вверх
COVD
Дата 21.5.2010, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



Цитата

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

Правильно.

Цитата

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

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

Цитата

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


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

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

Цитата

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

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

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

Это сообщение отредактировал(а) COVD - 21.5.2010, 20:31
PM MAIL   Вверх
x8m6
Дата 22.5.2010, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 11.12.2008

Репутация: нет
Всего: нет



Цитата

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

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

Цитата

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

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

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

PM MAIL   Вверх
x8m6
Дата 23.5.2010, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 11.12.2008

Репутация: нет
Всего: нет



Вот случайно наткнулся на статью про ВэбСокеты. По моему это то что надо. Что скажите?
PM MAIL   Вверх
COVD
Дата 25.5.2010, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



Цитата

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

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

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

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

Если в выборе протокола главным является "всепроходимость", то используются стандартные возможности HTTP, то, что декларируется в спецификации. Обсуждаемая же технология - всего лишь предложение, "кардинальное расширение протокола HTTP".  Вот когда попадет в спецификацию, тогда и будет интересно.
PM MAIL   Вверх
x8m6
Дата 25.5.2010, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 11.12.2008

Репутация: нет
Всего: нет



Цитата

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

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


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0817 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.