【发布时间】:2020-10-08 14:23:57
【问题描述】:
在读取服务器以从套接字读取之前,我在负载下接受连接并将其设置为 OPEN 的设置遇到问题。
示例(不是实际代码):
while (true) {
var objContext = HttpListenerContext.GetContext();
if (objContext.Request.IsWebSocketRequest){
var WebSocket = (await HttpListenerContext.AcceptWebSocketAsync(null)).WebSocket;
while (WebSocket.State == WebSocketState.Open) {
var buffer = new byte[BUFFERSIZE];
var result = await WebSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken);
....
}
}
}
在调用 AcceptWebSocketAsync 后我注意到在客户端和服务器上添加断点时,客户端收到连接已“打开”并准备好使用并开始发送数据。
问题是此时 ReceiveAsync 尚未启动,原因是 ReceiveAsync 开始运行任务的速度有点慢,由于有问题的服务器,它们在 WaitingForActivation 中停留的时间比在空闲系统上的时间长一点处于高负载状态(大量其他任务/线程和少量 cpu)。
这是正常行为吗?如何阻止?
【问题讨论】:
-
网页可能运行了java代码,java完成后才会返回数据。
-
不涉及java
标签: c# websocket system.net.websockets