如何最好地处理意外的套接字错误?

时间:2013-02-08 00:35:44

标签: c# sockets system.reactive

我有一个聊天客户端类

class ChatClient
{
    Task ConnectAsync(string server);
    Task SendMessageAsync(string message);
    Task DisconnectAsync();
}

用户连接ConnectAsync后,他们可以调用SendMessageAsync向其他用户发送消息。

引擎盖下有一个Connection类,它是Socket类的一个非常基本的包装器。其中一个主要区别是它有一个OnError事件。

我还使用了一个可观察的消息流(反应式扩展),它从连接中读取并从服务器生成一个传入命令流。

我的问题是这个 - 当套接字产生错误时,我最好从哪里处理这个错误?我应该在OnError事件处理程序中处理它,还是应该从可观察流中拦截错误并在那里处理它?<​​/ p>

我无论如何都看不出任何上行或下行,所以我想知道最佳做法是什么?

关于在连接类上发生事件的事情总是让我觉得有点hacky,但我不知道为什么。

有什么建议吗?感谢

1 个答案:

答案 0 :(得分:0)

我不得不说最好的解决方案对最终用户来说是最透明的。如果错误以某种方式影响用户,则应通知他们或选择如何继续。如果无法通知用户,则以便于将来改进的方式处理错误。