c# - 如何在关闭 WebSocket c# 时传递自定义 WebSocketCloseStatus
问题描述
目前我使用下面的函数来关闭 websocket
await webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None);
以下是可以提供的可能值WebSocketCloseStatus
namespace System.Net.WebSockets
{
public enum WebSocketCloseStatus
{
NormalClosure = 1000,
EndpointUnavailable = 1001,
ProtocolError = 1002,
InvalidMessageType = 1003,
Empty = 1005,
InvalidPayloadData = 1007,
PolicyViolation = 1008,
MessageTooBig = 1009,
MandatoryExtension = 1010,
InternalServerError = 1011
}
}
但是我想在关闭 websocket 时提供自定义数字作为 websocketclosestatus,例如 4200、4201、4202 等。因为我的消息来源希望我用这些自定义数字关闭 websocket。每个数字都有自己的含义。
有什么想法吗 ?
编辑:注意,我没有使用任何 3rd 方库/Nuget 包来连接/接收/关闭 websocket,我System.Net.WebSockets
只使用该库。
解决方案
您可以使用强制转换来发送自定义状态:
我不知道您使用的是哪个框架,只检查了经典的 .Net 框架(v4.8)。
参数从( source ) 更深地传递到函数,首先验证此参数。此验证仅检查状态是否在有效范围内(不是介于 0 和 999 之间,并且没有某些特殊状态 1006 或 1015)。然后更深入地调用(source)的函数。在这里,此参数被分配给对象的属性-此属性被强制转换为然后它在线路中输出。
没有检查该参数是否应仅具有来自枚举列表的值。
client.CloseAsync((WebSocketCloseStatus)4005, "Empty", cts.Token);
closeStatus
CloseAsync
CloseOutputAsync
WebSocketOperation.CloseOutputOperation
m_CloseOutputOperation.CloseStatus = closeStatus;
ushort
payloadBuffer.CloseStatus.CloseStatus = (ushort)CloseStatus;
推荐阅读
- python - CNN - 负损失值
- powershell - 为什么 Powershell ISE 控制台显示 $args 值不正确
- python - Python ImportError:无法导入名称__init__.py
- c# - Xamarin Forms - 将scrollview.Scrolled附加到函数
- r - rollapply() n 个月
- apache-flink - 在 Flink Operator 中轮询外部数据源
- python - 定时器线程和 tkInter 的问题
- typescript - 根据兄弟值的类型设置类型
- linux - OpenCV如何选择要连接的相机?
- sql-server - 将第二个表中的单行与具有多列的多个匹配项匹配