Dzięki websocketom dane na twojej stronie mogę być wymienianiane w czasie rzeczywistym bez potrzeby przeładowania strony. Popularnym przypadkiem użycia są czaty z poziomu przeglądarki.
Gdyby korzystać z frameworka ASP.NET w wersji 4 to do wymiany danych w czasie rzeczywistym można wykorzystać SignalR framework. Niestety nie ma jeszcze stabilnego wydania tego narzędzia dla dotnet core.
SignalR to “kombajn”, który potrafi sobie poradzić nawet w przypadku, gdy nasza przeglądarka nie obsługuje WebSocketów, możesz o tym poczytaj tutaj;
Prace nad SignalR dla core trwają ale Microsoft wydał paczkę WebSockets, która pozwala uruchomić serwer WebSocketowy.
Czego nauczysz się z tego wpisu?
W tym wpisie pokażę Ci jak uruchomić i skonfigurować własny serwer websocketów w projekcie ASP .NET Core.
Paczka z nuget
Moim punktem wejściowym jest nowy projekt ASP NET Core Mvc.
Dodaj paczkę z nugeta: Microsoft.AspNetCore.WebSockets
Konfiguracja middleware
Dodaj WebSocket middleware w metodzie Configure w pliku Startup.cs
Obsłużenie zapytań WebSocket
Stwórz metodę Echo w HomeController
Odebieranie i wysyłanie wiadomości
HttpContext.WebSockets.AcceptWebSocketAsync() jest tu najważniejsze. To te wywołanie zmiania połączenie TCP na WebSocketowe, więc w konsekwencji ta akcja obsłuży punkt dostępowy do WebSocketa a nie zapytanie http. Wywołanie te zwraca objekt WebSocket.
Testowanie
Do testowanie użyłem bardzo prostego skryptu w Pythonie.
Zainstalowałem paczkę websocket-client
A następnie skopiowałem przykład z repozytorium i podmieniłem url.
Test wyszedł pozytywanie, mój prosty websocketowy serwer działa.
Podsumowanie
Jak już pewnie zauważyłeś metoda Echo
nie wygląda zbyt przyjaźnie. Poszukałem chwilę i udało mi się znaleźć bardzo interesujące rozwiązanie na GitHubie – WebSocket Manager
. Tutaj znajdziesz instrukcję jak z niego skorzystać – Real Time ASP .NET Core
Kompletny przykład znajdziesz tutaj
Obrazek posta na darmowej licencji z FreePik

Software Developer | .NET and Angular enthusiast | 3D Printing fanatic