Реализация чата в качестве веб-сервиса - PullRequest
6 голосов
/ 24 мая 2009

У меня есть школьный проект, в котором мне нужно реализовать приложение чата, сервер которого будет веб-службой java.

Проблема в том, что я всегда думал о веб-сервисе как о способе вызова удаленных функций, и я понятия не имею, как поддерживать «сессию» активной в веб-сервисе или отслеживать все люди в чате, комнатах и ​​т. д.

Ответы [ 4 ]

6 голосов
/ 24 мая 2009

Насколько мне известно, сервер чата должен знать своих клиентов после первоначального подключения и отправлять каждое клиентское сообщение всем клиентам. Это определенно требует некоторого обслуживания сеанса. Я думаю, что правильный способ сделать это заключается в следующем:

  1. Клиент называет веб-сервис «рукопожатием» и предоставляет некоторые минимальные идентификационные данные.
  2. Сервер возвращает подтверждение, содержащее уникальный идентификатор клиента.
  3. Клиент вызывает веб-сервис «message» и отправляет новое сообщение вместе с его идентификатором.
  4. Сервер идентифицирует клиента по идентификатору, рассылает сообщение всем клиентам.

Я не совсем уверен, как должно работать распределение сообщений, так как веб-сервисы по сути являются пул-сервисами, а не пушами. Возможно, клиент должен предоставить свой собственный веб-сервис для вызова сервера.

Надеюсь, это поможет,

Ювал = 8 -)

1 голос
/ 24 мая 2009

Вы можете рассмотреть вопрос о реализации решения COMET . Это эффективно даст вам быстрое общение, таким образом устраняя задержку, ОЧЕНЬ хорошую функцию для приложения чата.

Если вы хотите получить золото, подумайте о реализации более продвинутых функций:

  • проверка орфографии
  • URL / адреса электронной почты, преобразованные в ссылки автоматически
  • отдельные чаты
  • Функции модератора (завершение чата, удаление пользователя)
  • информация о событии типа "Пользователь печатает ..."
  • статусов (доступно, занято, нет ...)
  • аватары
  • ...
0 голосов
/ 24 мая 2009

Я написал движок чата, который имел службу в фоновом режиме и все, что хранится в базе данных, фрейм формы ввода и фрейм вывода, который получил поток html.

Если вы хотите пропустить служебную часть и реализовать ее только через веб-службу, вам необходимо реализовать как минимум две операции: публикация для входных данных и GetLatestChanges для получения вывода чата, который переводится в HTML с использованием некоторой магии Javascript.

Конечно, вам нужно следить за комнатами, пользователями, сообщениями, которые пользователь получает, какие тексты и т. Д., Как набросано Unknwntech.

0 голосов
/ 24 мая 2009

Я не знаю Java, поэтому этот ответ не зависит от языка.

По моему мнению, самый простой способ сделать это без запуска процесса на сервере - это сохранить все ваши данные в базе данных.

Вот краткий список основных вещей, которые нужно будет сделать:

  1. Нужна таблица со списком пользователей и паролями для аутентификации
  2. Нужна таблица для зарегистрированных пользователей.
    A. нужно поле отметки времени последнего контакта
  3. Когда пользователь что-то делает, он обновляет поле последнего контакта до текущего времени
  4. Если время последнего контакта пользователя> текущее время + 2 минуты, то он выходит из системы
  5. клиентское приложение должно будет периодически отправлять на сервер сообщения «Я все еще здесь»
  6. Вам нужно будет найти способ определить, когда сообщение было отправлено и когда обновлять отображение на клиенте о том, что сообщение было получено, я оставлю это вам.

Если вам все еще нужна помощь, вот приложение для чата AJAX / ASP.Net, которое должно (я не смотрел на его источник) работать так же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...