У нас есть архитектура (несколько) клиентов-(один) сервер для настольной игры в покер. Мы используем уведомления обратного вызова, используя каналы обратного вызова.
Но иногда из-за обрывов интернет-соединения этот конкретный клиент отключается от сервера, и канал WCF этого конкретного клиента также переходит в ошибочное состояние, и его канал обратного вызова, который находится на сервере, также нарушается.
Сценарий:
Этот клиент играет в игру, в то время как интернет-соединение обрывается, эта игра останавливается, но его игровое окно остается открытым, и когда его/ее интернет-соединение восстанавливается, этот клиент отключается от сервера, но игровое окно этого игрока все еще открывается, и этот игрок может ничего не делать, так как его/ее канал WCF отключен.
Мы хотим закрыть окно этого конкретного клиента, пока он/она отключается от сервера и генерирует исключение 'CommunicationObjectAbortedException'.
Мы не можем использовать канал обратного вызова предыдущего канала WCF, так как он находится в ошибочном состоянии. Итак, мы попытались создать новый callbackChannel на сервере при удалении, используя следующий код:
OperationContext.Текущий.GetCallbackChannel();
но здесь Current показывает «NULL», поскольку канал WCF этого игрока прерван, поэтому выдается ошибка, что «Ссылка на объект не установлена на экземпляр объекта».
Итак, есть ли какое-либо решение для использования канала обратного вызова прерванного канала WCF или восстановления этого канала WCF без их повторной инициализации или для вызова этого клиента с использованием нового канала?