1. Wprowadzenie do ASP.NET
  2. Szybki start
  3. Struktura projektu
  4. Tworzenie kontrolerów i akcji
  5. Routing
  6. Modelowanie danych
  7. Widoki RazorViewEngine i TagHelpers
  8. Dostęp do danych
  9. Middleware
  10. Implementacja uwierzytelnienia
  11. Obsługa błędów
  12. Stylowanie aplikacji
  13. Implementacja serwisów RESTful
  14. Implementacja WebSocketów
  15. Testowanie aplikacji
  16. Debugowanie aplikacji
  17. Wdrażanie aplikacji
  18. Integracja z innymi technologiami
  19. Podsumowanie

Implementajca WebSocketów

WebSocket to technologia pozwalająca na dwukierunkową komunikację pomiędzy przeglądarką internetową a serwerem, która umożliwia niskopoziomowe przesyłanie danych w czasie rzeczywistym. W przypadku ASP.NET Core, WebSockety można zaimplementować w celu umożliwienia komunikacji pomiędzy przeglądarką a serwerem za pomocą protokołu WebSocket.

Podstawowe kroki, aby zaimplementować WebSockety w ASP.NET Core:

1. Dodaj obsługę w pliku Startup.cs poprzez wywołanie metody UseWebSockets() na obiekcie IApplicationBuilder.

												
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // ...
    app.UseWebSockets();
    // ...
}
												
										

2. Dodaj obsługę WebSocket w kontrolerze. W tym celu utwórz akcję, która będzie obsługiwać połączenia WebSocket i skorzystaj z metody HttpContext.WebSockets.AcceptAsync() do zaakceptowania połączenia.

												
[HttpGet("/ws")]
public async Task WebSocketHandler()
{
    var webSocket = await HttpContext.WebSockets.AcceptAsync();
    // Obsługa połączenia WebSocket.
}
												
										

3. W ramach obsługi połączenia WebSocket możesz korzystać z różnych metod WebSocket, takich jak ReceiveAsync(), SendAsync() czy CloseAsync(), aby przesyłać dane pomiędzy klientem a serwerem.

												
[HttpGet("/ws")]
public async Task WebSocketHandler()
{
  var webSocket = await HttpContext.WebSockets.AcceptAsync();

  while (webSocket.State == WebSocketState.Open)
  {
    var buffer = new ArraySegment<byte>(new byte[1024]);
    var result = await webSocket.ReceiveAsync(buffer, CancellationToken.None);

    if (result.MessageType == WebSocketMessageType.Text)
    {
      var message = Encoding.UTF8.GetString(buffer.Array, buffer.Offset, result.Count);
      var responseMessage = $"You sent {result.Count} bytes: {message}";
      var responseBuffer = new ArraySegment<byte>(Encoding.UTF8.GetBytes(responseMessage));
      await webSocket.SendAsync(responseBuffer, WebSocketMessageType.Text, true, CancellationToken.None);
    }
    else if (result.MessageType == WebSocketMessageType.Close)
    {
      await webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None);
    }
  }
}
												
										

4. Możesz również użyć middleware'ów WebSocket, takich jak MapWebSocketManager<T>(), który pozwala na prostą obsługę wielu połączeń WebSocket za pomocą jednego menedżera.

												
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // ...
    app.UseWebSockets();
    app.MapWebSocketManager<MyWebSocketHandler>("/ws");
    // ...
}
												
										
												
public class MyWebSocketHandler : WebSocketHandler
{
  public MyWebSocketHandler(WebSocketManager webSocketManager) : base(webSocketManager)
  {
  }

  public override async Task OnConnectedAsync(WebSocket socket)
  {
    await base.OnConnectedAsync(socket);
    // Obsługa nowego połączenia WebSocket.
  }

  public override async Task ReceiveAsync(WebSocket socket, WebSocketReceiveResult result, byte[] buffer)
  {
    // Obsługa otrzymanej wiadomości.
  }
}
												
										
Notatka

Oprócz powyższych kroków, warto pamiętać, żeby korzystać z CancellationToken, aby w odpowiedni sposób obsłużyć przerwanie połączenia oraz zaimplementować obsługę błędów.

Ważne

Dzięki implementacji WebSocketów w ASP.NET Core, aplikacja jest w stanie obsługiwać interaktywną i natychmiastową komunikację z klientem, co może być szczególnie przydatne w aplikacjach wymagających ciągłego przesyłania danych w czasie rzeczywistym, takich jak czaty, gry online czy transmisje wideo na żywo.