Terimi kaldır: c# signalr client app c# signalr client appTerimi kaldır: c# windows form signalr client c# windows form signalr clientTerimi kaldır: signalr client signalr clientTerimi kaldır: windows form signalr client windows form signalr client

SignalR ile C# Windows Forms Client Uygulaması

Merhaba,

SignalR, Microsoft ASP.NET için, sunucu kodunun istemci tarafı web uygulamalarına eşzamansız bildirimler göndermesine izin veren ücretsiz ve açık kaynaklı bir yazılım kütüphanesidir. Kitaplık, sunucu tarafı ve istemci tarafı JavaScript bileşenleri içerir.

Peki SignalR winforms uygulamalasında nasıl kullanabiliriz?

İki Alternatif üzerinden kurulum gerçekleştirebilirsiniz.

1.
VStudio için

Install-Package Microsoft.AspNetCore.SignalR.Client

.Net CLI için

dotnet add package Microsoft.AspNetCore.SignalR.Client

2.
VStudio ile Nuget Solution üzerinden

using System;
using System.Threading.Tasks;
using System.Windows;
using Microsoft.AspNetCore.SignalR.Client;

namespace SignalRChatClient
{
    public partial class MainWindow : Window
    {
        HubConnection connection;
        public MainWindow()
        {
            InitializeComponent();

            connection = new HubConnectionBuilder()
                .WithUrl("http://localhost:53353/ChatHub")
                .Build();

            connection.Closed += async (error) =>
            {
                await Task.Delay(new Random().Next(0,5) * 1000);
                await connection.StartAsync();
            };
        }

        private async void connectButton_Click(object sender, RoutedEventArgs e)
        {
            connection.On("ReceiveMessage", (user, message) =>
            {
                this.Dispatcher.Invoke(() =>
                {
                   var newMessage = $"{user}: {message}";
                   messagesList.Items.Add(newMessage);
                });
            });

            try
            {
                await connection.StartAsync();
                messagesList.Items.Add("Connection started");
                connectButton.IsEnabled = false;
                sendButton.IsEnabled = true;
            }
            catch (Exception ex)
            {
                messagesList.Items.Add(ex.Message);
            }
        }

        private async void sendButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                await connection.InvokeAsync("SendMessage", 
                    userTextBox.Text, messageTextBox.Text);
            }
            catch (Exception ex)
            {                
                messagesList.Items.Add(ex.Message);                
            }
        }
    }
}

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

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