5

我们为扑克桌面游戏提供(多个)客户端-(一个)服务器架构。我们正在使用回调通道使用回调通知。

但有时由于互联网连接断开,该特定客户端与服务器断开连接,该特定客户端的 WCF 通道也进入故障状态,其位于服务器中的回调通道也故障。

设想 :

该客户端正在玩游戏,而互联网连接断开,该游戏停止,他的游戏窗口仍然打开,当他/她的互联网连接恢复时,该客户端从服务器中退出,但该玩家的游戏窗口仍然打开并且该玩家可以当他/她的 WCF 频道退出时,不要做任何事情。

我们希望在他/她从服务器中退出并抛出“ CommunicationObjectAbortedException ”异常时关闭该特定客户端的窗口。

我们不能使用以前的 WCF 通道的回调通道,因为它处于错误状态。所以我们尝试在服务器中创建新的回调通道,同时使用下面的代码:

操作上下文。当前.GetCallbackChannel();

但是这里 Current 显示“ NULL ”,因为该播放器的 WCF 通道已中止,因此它会引发“对象引用未设置为对象实例”的错误。

那么是否有任何解决方案可以使用已中止的 WCF 通道的回调通道或恢复该 WCF 通道而不重新初始化它们或使用新通道调用该客户端?

4

1 回答 1

1

我会尝试以下:

  1. 在服务器端,当尝试使用故障/中止的 chanel 进行通信时 - 你会失败。抓住这个失败,并从列表中删除它的回调(我想你管理一些回调列表)。

  2. 在客户端 - 当 chanel Faulted / ... 处理时 - 尝试重新打开新的 chanel 到服务器。当这个新的 chenel 将打开时,在服务器端将这个新的回调放回“有效回调”列表。

于 2013-11-20T12:08:22.197 回答