【发布时间】:2021-10-08 01:41:34
【问题描述】:
我有一个 .Net/C# 服务器。客户端通过 websockets 连接到服务器。
我想从服务器检测客户端失去互联网连接的情况。
我在一个循环中包含以下代码,该循环通过 Web 套接字读取来自客户端的数据
Dim WS as Websocket 'Websocket Created somewhere else...
Dim MemoryStream As New MemoryStream()
Dim Result As WebSocketReceiveResult = Nothing
Dim Buffer As ArraySegment(Of Byte) = New ArraySegment(Of Byte)(New Byte(20000) {})
Do
Try
Result = Await WS.ReceiveAsync(Buffer, CancellationToken.None)
Catch Ex As WebSocketException
'Some exception handler
End Try
If WS.State <> WebSocketState.Open Then '<< Break point A
RaiseEvent Disconnected(Me) '<<<<<< Raise websocket disconnected event
End If
MemoryStream.Write(Buffer.ToArray, Buffer.Offset, Result.Count)
If Result.EndOfMessage = True Then Exit Do
Loop
'Do something '<< Break point B
为了测试代码,我几乎在所有地方都放置了断点,然后我连接了一个客户端。客户端连接后,我为他切断了互联网连接。
很遗憾,没有命中断点来检测 Websocket 断开连接事件。
我想知道在 C# 或 .Net 中是否有办法检测 websocket 对象何时断开
谢谢 问候,
【问题讨论】:
-
您需要立即知道的任何特定原因(尤其是在服务器端),而不是在您第一次尝试发送实质性内容但失败时?