我正在开发一个 C# Asp.NET Core 应用程序,其中客户端将通过 JavaScript WebSocket 连接到服务器,而服务器本身将是唯一可以向连接的客户端发送消息的东西。
客户端不会将消息发送回服务器,如果他们设法通过在任何浏览器控制台中手动发送消息到服务器,服务器将忽略它们。
这是我用来向所有连接的客户端发送消息的 C# 代码示例:
foreach(WebSocket webSocket in WebsocketHandler.WebSocketClients.Values)
{
await webSocket.SendAsync(...);
}
由于我不希望客户端将消息发送回服务器(因为这应该是单向消息流),因此后续调用:
await webSocket.ReceiveAsync(...);
在调用“SendAysnc()”后立即需要吗?调用“SendAsync()”后不调用“ReceiveAsync()”的缺点/后果是什么?
我在 MS 的文档中找不到任何内容说在调用“SendAsync()”之后需要调用“ReceiveAsync”(尽管大多数在线示例都这样做)并且两种方法(根据 MS 文档)都声明“此操作不会堵塞。”
我在这里主要关心的是,是否持续只发送消息而不接收任何返回可能会导致许多“SendAsync()”调用堆积的内存泄漏,因为它期望一些“响应”返回或服务器断开客户端( s) 因为没有消息从通信通道的另一端发回,服务器认为客户端已经掉线。
问候。