私は、サーバーとのWebSocket HTTPListener
を持っている、そしてクライアントがWebSocket
のあるドゥのWebSocket SendAsync()同期
私は、リスト内のすべての現在のクライアントを維持し、私はに情報を送る機能を持つようにしたいですすべてのクライアントを非同期に
は、だから私は、現在持っているものです。
private async Task SendToAll(byte[] buffer)
{
foreach (WebSocket webSocket in clients)
{
await Send(webSocket, buffer, buffer.Length);
}
}
private async Task Send(WebSocket webSocket, byte[] buffer, int bufferLength)
{
try
{
await webSocket.SendAsync(
new ArraySegment<byte>(buffer, 0, bufferLength),
WebSocketMessageType.Text, true,
CancellationToken.None);
}
catch (WebSocketException ex)
{
RemoveClient(webSocket, WebSocketCloseStatus.InternalServerError, ex.Message);
}
}
問題がある、私は私には無駄であるスレッドの意味の数を、開いていたクライアントの大多数を持っている場合。だから、私はSend()
関数が同期的に発生する可能性があると考えましたが、WebSocket
には同期関数がありません。これは私には奇妙です。
私は、タスク関数を同期して実行するのは良い習慣ではないと思うので、それを行う良い方法はありますか?私はちょうどawait
を落としたくありません。
テストの後、私の質問は、オーバー最適化不要ですについて確かです。時にはそれをもう一度聞くことは良いことです。ありがとうございました! – galah92