[Blog Post] ASP.NET MVC 5 ve SignalR ile 5 Dakika’da Chat/Mesajlaşma Uygulaması Yazmak


Merhaba arkadaşlar,

Geçen sene yazımda bu 5 dakikada chat uygulamasının yazılmasını ingilizce olarak paylaşmıştım sizlerle. SignalR teknolojisi kullanarak yapacağım bu örnekte SignalR’ın işlev olarak çok küçük bir parçasını göstermiş olacağım. SignalR hakkında daha fazla bilgiyi buradan faydalabilirsiniz.

Hazırlık

Bu uygulamayı geliştirirken .Net Framework 4.5 ile Visual Studio 2013 Professional kullanacağım. Express sürümünü buradan indirebilirsiniz.

Uygulama

1) Visual Studio 2013’te New Project diyerek aşağıdaki gibi “ASP.NET Web Application” diyoruz.

SignalRileChatUygulamasi_ASPNETMVC_5

2) Empty template seçip, MVC içinde klasör ve temel referansları ekleyecek şekilde tamam diyoruz.

SignalRileChatUygulamasi_ASPNETMVC_5_EmptyMVC

3) SignalR kullanmamız için gerekli bazı dll ve javascript dosyaları var. Bunlar için Nuget package kullanacağız. Tools > Library Package Manager > Package Manager Console’a tıklayıp açıyoruz.

SignalRileChatUygulamasi_ASPNETMVC_5_EmptyMVC_NugetPackageConsole

4) Açılan konsola “Install-Package Microsoft.AspNet.SignalR” yazıyoruz ve Enter diyoruz.

SignalRileChatUygulamasi_ASPNETMVC_5_packageInstaller_Install-package-signalr-client

Gerekli yüklemeler yapıldıktan sonra solution’ımızın yeni durumu aşağıdaki şekilde olacaktır.

SignalRileChatUygulamasi_ASPNETMVC_5_packageInstaller_Install-package-signalr-client_visual_studio

5) Projemize ChatHub isminde bir SignalRHub Class ekliyoruz ve içerisine bir takım kodlar yazıyoruz.

SignalRileChatUygulamasi_ASPNETMVC_5_packageInstaller_Install-package-signalr-client_visual_studio_chatHubSignalR

SignalRileChatUygulamasi_ASPNETMVC_5_packageInstaller_Install-package-signalr-client_chatApplication

6) Startup Dosyası Oluşturuyoruz ve İçerisine bir kaç satır kod yazıyoruz.

SignalRileChatUygulamasi_ASPNETMVC_5_Startup_Cs7) Controller ve View Ekleme. View içerisinde ilgili kodlarımızı yazıyoruz. 

SignalRileChatUygulamasi_ASPNETMVC_5_controller_view

8) İşte sonuç

[vimeo 81579536]

9) İndirme

Uygulamayı bu linkten indirebilirsiniz.

Teşekkürler

 

, , , , , ,

  1. #1 by Mehmet on December 29, 2013 - 4:43 pm

    Elinize sağlık , birde web form’ları için bir çalışmanız var mı?

    • #2 by Mahmut Can Sozeri on January 8, 2014 - 9:53 am

      Rica ediyorum. Bununla ilgili herhangi bir çalışmam bulunmamaktadır. Ama siz üzerinde çalışır ve sorunlar yaşarsanız benimle paylaşmanız durumunda ben yardımcı olmaya çalışırım.

  2. #3 by aa on January 26, 2014 - 11:57 am

    eline koluna sağlık hocam

  3. #4 by Ahmet on March 9, 2014 - 1:07 am

    Bu uygulamayı yaparken veya direk aldığınız yeri kaynak olarak göstermeniz gerekirdi. Bu uygulamayı siz yazmamışsınız emek hırsızlığı yapıyorsunuz. Uygulamanın asıl olduğu yer http://www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/tutorial-getting-started-with-signalr-20-and-mvc-5.

    Lütfen emeğe saygı. Büyük ihtimal bunu da yayınlamaz sınız.

  4. #6 by efkan on April 28, 2014 - 3:45 pm

    çok başarılı hocam tebrikler

  5. #7 by Burak on May 6, 2014 - 2:12 pm

    Çok başarılı bir makale tebrikler. Aklıma takılan bir soru var Mesajları tüm kullancılara değil de sadece ilgili kullanıcıya göndermek için nasıl bir yol izlemeyiliz facebook chat gibi düşünebilirsiniz

    • #8 by Mahmut Can Sozeri on May 6, 2014 - 2:16 pm

      Teşekkür ediyorum ilginiz için. Bu konuda bir kişi daha sordu ve gerçek hayat örneği üzeridne ben çalışıyorum yakında paylaşacağım.
      Ama kısaca değinmek gerekirse, ilgili kişiye yollamak için Caller, çoklu sohbet için ise genellikle Group metotları kullanılmaktadır.

      • #9 by Burak on May 6, 2014 - 2:50 pm

        Teşekkür ediyorum sabırsızlıkla bekliyor olacağım.

  6. #10 by pcmusti on August 17, 2014 - 11:51 am

    Reblogged this on Mustafa Alkan Kişisel Blog Sitesi and commented:
    Asp.Net MVC5 SignalR Kullanımı

  7. #11 by Burhan on October 28, 2014 - 12:11 pm

    Hocam bunu mvc de değilde asp.net web formda nasıl yapabilirim? Yardımcı olursanız sevinirim 🙂

  8. #12 by Ahmet “AhMtn” Metin on March 23, 2015 - 5:08 pm

    gayet başarılı, bunu kullanarak facebook tarzı çoklu chatbox yapmak için ne gibi mantık yürütmeliyiz işin mantığından biraz söz edermisiniz, iyi çalışmalar.

  9. #13 by Furkan on April 1, 2015 - 3:01 pm

    Çok teşekkür ederim emeğinize vaktinize sağlık. bu uygulamayı 1 e 1 facebook chat şekline dönüştürme imkanımız olur mu acaba ?

    • #14 by Furkan on April 1, 2015 - 3:03 pm

      Daha önce yazılan mesajları okudum bende bekliyor olacağım bu uygulamayı. ancak biraz bilgi verebilirseniz bende üzerinde çalışmak isterim.

  10. #15 by asd on April 4, 2015 - 9:35 am

    nasıl çok başarılı bir makale oluyo ilginç
    Projemize ChatHub isminde bir SignalRHub Class ekliyoruz ve içerisine bir takım kodlar yazıyoruz

    bir takım kod ne demek ? hiç bir şeyi açıklamadan kopyala yapıştırlamı öğrencez

    • #16 by Mahmut Can Sozeri on April 4, 2015 - 10:45 pm

      Haklısınız, ama keşke isminizi ve email adresini verseydiniz bu soruya vereceğim detaylı cevabı görebilirdiniz.

  11. #17 by aykut on May 10, 2015 - 6:41 pm

    SignalR ile iki kişinin sadece karşılıklı konuştuğu proje hakkında bilgi alabilirmiyim acaba ?

    • #18 by Mahmut Can Sozeri on July 8, 2015 - 7:07 pm

      Merhaba,

      Facebook chat gibi mi söylüyorsunuz? Mesela listenizde bir çok kişi var, her birisi ile tek tek mi konuşmak istiyorsunuz?

      • #19 by turko on July 13, 2015 - 12:38 pm

        Evet, mesela client ile özel mesajlaşmak için signalR uygun mu? veya hangi kütüphane ile daha iyi yapılabilir.

      • #20 by Mahmut Can Sozeri on August 11, 2015 - 1:46 pm

        Selamlar,

        Elbette en uygunu bu olacaktır. Çünkü Microsoft’un her teknolojisinde olduğu gibi bu teknolojininde kullanımı oldukça kolay ve gerçekten başarılı.

  12. #21 by kuralmuhammed@hotmail.com on June 22, 2015 - 5:50 pm

    proje linki yenilermisiniz

    • #22 by Mahmut Can Sozeri on August 11, 2015 - 1:39 pm

      Selamlar,

      SignalR’da grup chat’i var veya ilgili Id’deki kişiye birebir mesaj yollayabiliyorsunuz. Bu tarz bir uygulama sitede yer vereceğim.

      İyi çalışmalar

  13. #23 by rcn on January 20, 2016 - 10:12 pm

    Selamlar hocam,

    SignalR ile şunu yapabilir miyim. Login olan kullanıcı , eski kullanıcıyı sistemden atmak istiyorum. Aynı kullanıcı bir kez login olabilir. Her yeni girişte eski kullanıcı atacak. Tıpkı uzak masa üstündeki logon işlemi gibi.

    • #24 by Mahmut Can Sozeri on February 5, 2016 - 1:48 pm

      Selamlar Ercan Bey,

      Normalde çalışma mantığı olarak elbette farklılar fakat burada gördüğünüz gibi ekrana mesaj olarak nasıl istek yollanıyorsa. Her kullanıcı bir Session Id ve username olarak tutarsınız. Herhangi bir user bir mesaj yazdığı zaman tüm kullanıcılara bu bilgi gider ama eğer aralarında başka bir yerden chat’i atmış kişi varsa onun session’ını sonlandırabilirsiniz. Ekranınıda temizlersiniz. Ya da 5-10 dk da bir tüm session bilgilerini sorgulayan bir yapı kurarsınız o an kim 2.bir yerde açdıysa eski olanı kapatırsınız yukarıda yazdığım gibi.

      Umarım faydalı olmuştur.

      İyi çalışmalar

  14. #25 by Serdar on February 22, 2016 - 10:17 am

    Daha İyi anlatılamazdı. Yüreğinize Sağlık…
    Takipte olacağım 🙂

  15. #27 by Fatih on May 15, 2017 - 10:31 pm

    hocam merhaba Benim eski klasik asp.net porjem var c# asp.net msql veritabanım var projenizi indirimdi sorunsuz çalışıyor ama sadece mesaj gonderiyor. Ben bunu subdomain kurup orada çalıştırıp sadece bu metine beraber sohbet ederken kendi üye tablomdan üyenin adınıda yazsın istiyorum yani mesajı atarken kendi üye tablomdaki Ad Soyad : mesaj şeklinde çıksa yeter

    bu mümkünmü?
    bunu nasıl yapabilirim?
    Acemiyim

    • #28 by Mahmut Can Sozeri on May 17, 2017 - 6:37 am

      Merhaba, bir kullanıcı login olduğunda isim bilgisini session’da tutup, .cs tarafında metin gönderilirken ikinci bir parametre olarak Ad Soyad gönderimi sağlayabilirsiniz.

  1. [Blog Post] ASP.NET MVC İle İlgili Tüm Yazılarım (33 Yazı, 1 Yazı Dizisi ve 1 İpucu Serisi) [Güncellendi] | Mahmut Can Sozeri

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.