Сервер для «уведомления» абонентов веб-службы, когда другой пользователь делает звонок - PullRequest
0 голосов
/ 24 февраля 2012

Я делаю эту карточную игру с моим братом, чтобы моя семья могла играть удаленно. Это как сердца в Windows. Давайте предположим, что это сердца, поэтому мне не нужно объяснять скучные правила игры.

Будет 3 или более игрока, и каждый игрок будет бросать карту на пол во время своего хода.

У меня есть база данных и библиотека классов с бизнес-логикой и возможностью чтения / записи в базе данных.

Сейчас у меня есть несколько функций:

  • Новая игра
  • Добавить игроков
  • Начало игры
  • Проверить статус игры => Вернуть то, что находится на полу, какие карты находятся на руке вызывающего, сколько карт у каждого из противников, чья очередь, кто хозяин и т. Д.
  • Сделать ход => Пользователь уведомляет сервер, что он хочет использовать определенную карту.

У меня есть веб-сервис, который использует библиотеку классов и WebMethods для вызова каждой из функций. Веб-страницы / автономные приложения могут использовать библиотеку классов напрямую или вызвать веб-службу для использования функции.

Я изо всех сил стараюсь придумать, как «уведомить» других пользователей о том, что другой игрок выполнил действие. Возможные логические схемы, о которых я подумал:

  • Звоните, проверяйте статус игры каждые x секунд, чтобы узнать, все ли
  • Вызовите веб-метод «дайте мне знать, если что-то изменилось» асинхронно с функцией обратного вызова.
    • Что делать, если время ожидания истекло?
    • Что если пользователь выйдет из игры в середине?

Пожалуйста, помогите мне с этим.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2012

Дуплексные каналы WCF были разработаны именно для такого сценария http://msdn.microsoft.com/en-us/library/ms731064.aspx

0 голосов
/ 24 февраля 2012

Опрос службы будет приемлемым, пока не будет большого количества клиентов. Кроме того, каждый клиент может отправить WS-сигнал «сердцебиение», чтобы указать «да, я все еще подключен». Таким образом, вы можете обнаружить отключенных клиентов.

Если вы предпочитаете не опрашивать, вы можете посмотреть push-уведомления: http://msdn.microsoft.com/en-us/library/windows/apps/hh465460.aspx

...