0

Прежде всего, я создаю нечто вроде решения клиент/сервер с использованием стандартного веб-сайта ASP.NET. Я знаю, что этот метод не рекомендуется, и большинство людей хотели бы кричать «COMET!». или "HTML5 Sockets!" - но, пожалуйста, не надо ;-)!События через область применения для нескольких клиентов?

Что я делаю ...

Я создаю MMORPG на сайте.

У меня есть несколько клиентов, которым необходимо связаться одновременно. Это делается глобальным объектом в области Приложения.

Моя проблема

мне нужно, чтобы вызвать событие для нескольких клиентов. Например, когда атака была выполнена, мне нужно обновить некоторые графики. Логика атаки разрешается в глобальном объекте, но каждый из клиентов должен реагировать на это.

Прямо сейчас я делаю следующее:

fightTrace.Reciever.InvokeMoveEnded(this); 
    fightTrace.FiredBy.InvokeMoveEnded(this); 

(Это своего рода шаблон наблюдателя)

Что будем бороться условие гонки. Тот, кто загружает событие page_load, получит оба этих события, а тот, кто их не запускает, не будет испытывать никаких изменений в пользовательском интерфейсе.

Так что же я действительно хочу?

Что мне действительно нужно, это подлинный и приятный способ создания шаблона наблюдателя через состояние приложения. Мне нужно отправить событие каждому «слушателю», который в этом случае является клиентом, а затем сделать некоторое обновление.

Один из способов сделать это - это сеанс, с истинным/ложным. Но мне бы очень хотелось, чтобы это было лучше!

Спасибо!

ответ

0

Если я правильно понял ваш контекст, то всякий раз, когда состояние объекта вашего приложения изменяется, вы хотите синхронизировать всех клиентов ваших приложений. То, что вы забываете здесь, - это поведение HTTP-протокола без гражданства. После отправки ответа соединение будет потеряно, вам нужно снова отправить HTTP-запрос, чтобы снова быть поданным. Однако вы можете эмулировать некоторые вещи, используя State Management и краткие и своевременные обновления на основе Ajax для имитации подключенной среды. Однако я должен произнести слова, которые вы не хотите слышать. Не рекомендуется.

Вместо этого вы можете сохранить состояние объекта приложения и всякий раз, когда приходит запрос, ответ будет основан на обновленном состоянии вашего объекта. Любой способ, которым клиент должен инициировать запрос.