Sevgili arkadaşım Bora Kaşmer yeni yapacağı bir proje ile ilgili konuşurken Asp.Net Core üzerinde SignalR çalıştırmak istediğini söyledi, ben de bu makaleyi yazdım :)
Bu makalede adım adım ilerleyerek, dotnet CLI ile projeyi oluşturacak, Visual Studio Code ile geliştirecek ve Microsoft Edge tarayıcısı ile test edeceğiz.
Öncelikle, eğer bilgisayarınızda .Net Core yüklü değilse yüklemeniz gerekiyor.
Hemen proje için yeni bir dizin oluşturalım ve Command Prompt açarak dotnet new komutu ile projeyi oluşturalım;
Projeyi oluşturduğumuz dizinde Program.cs ve project.json dosyaları oluşmuş olmalı.
Eğer SignalR ve .Net Core birlikte kullanmak istiyorsak, bu makalenin yazıldığı tarihte yayınlanmamış olan en yeni Nuget paketlerini kullanmalıyız. Bunun için gecelik derlenen paketlere erişebilmemiz lazım. Projeye Nuget.config isimli bir dosya ekleyelim ve içerisine aşağıdaki Nuget kaynaklarını yazalım;
Artık project.json dosyasını açarak, dependencies kısmının içerisine aşağıdaki paketleri yazabiliriz;
Paketleri indirmek için Command Prompt içerisinde dotnet restore komutunu çalıştırmamız lazım;
Şimdi Program.cs dosyasını açalım ve Main() method’unun içerisini aşağıdaki şekilde değiştirelim;
Program.cs dosyasının using kısmına aşağıdaki tanımlamaları da eklememiz gerekiyor;
Satır satır inceleyecek olursak, öncelikle Application Server olarak IIS değil, Kestrel kullanacağımızı tanımlıyoruz, html, js, css, jpg gibi static dosyaların wwwroot dizininde olacağını tanımlıyoruz, uygulamanın açılışı esnasında yapılacak işleri Startup isimli class içerisine yazacağımızı tanımlıyoruz ve son olarak uygulamayı çalıştırmaya başlıyoruz.
Projeyi oluşturduğumuz dizinde Startup.cs isimli bir dosya oluşturalım ve içerisine aşağıdaki kodları yazalım;
Böylece, WebSocket ve SignalR kullanacağımızı .Net Core uygulamamızda tanımlamış olduk.
Bir SignalR Hub‘ı oluşturmak için projeyi oluşturduğumuz dizine ChatHub.cs isimli bir dosya ekleyelim ve içine aşağıdaki kodları yazalım;
Artık proje dizininde wwwroot isimli yeni bir dizin oluşturarak içine index.html dosyasını ekleyebiliriz, index.html dosyasının içine aşağıdaki kodları yazalım;
Basitçe, mesajların sayfada görüntülenebilmesi için bir textarea, mesaj göndermek için bir text ve bir button ekledik. Javascript ile buton’a her tıklandığında SignalR Hub’ına mesajın gönderilmesini, SignalR Hub’ından gelen mesajların da textarea içerisinde gösterilmesini sağladık.
Command Prompt açarak dotnet run komutunu çalıştıralım;
Command Prompt penceresini kapatmadan, iki farklı Microsoft Edge tarayıcı açarak uygulamayı http://localhost:5000/index.html adresinden test edebiliriz;
Projenin kodlarını Github hesabım üzerinden dotnet-core-signalr dizininde bulabilirsiniz.
Senior Software Engineer, @Microsoft
Ada ve Ege'nin babası ;)
Makale Adedi: 484