Pull to refresh

Сетевое программирование | Многопользовательский чат на C# NET за 5 минут

Level of difficultyEasy

В этой статье вы узнаете, как создать чат-приложение на C# с использованием Ably. Мы рассмотрим основы Ably, интеграцию с C#, отправку/получение сообщений в реальном времени, управление подключениями и расширенные функции для создания надежного и масштабируемого чата.

Итак, создаём серверную часть проекта (Я приведу пример с использованием консольного проекта. Затем, если нужно, вы можете легко переделать его в WinForm)

Сначала нам понадобится скачать пакет "Ably.io" из nuget. Для этого нажимаем на вкладку Проект >> Управление пакетами Nuget >> Обзор. Вводим "Ably.io" и устанавливаем пакет.


Затем нужно реализовать подключение к серверу ably и отправку сообщений.

using IO.Ably;
using IO.Ably.Realtime; // Импортируем библиотеки ably

class Program
{
    static async Task Main(string[] args)
    {
        // Подключаемся к ably 
        var ably = new AblyRealtime("YOUR_CODE_ABLY");

        ably.Connection.On(ConnectionEvent.Connected, args =>
        {
            Console.WriteLine("Connected to Ably!");
        });

        
        var channel = ably.Channels.Get("get-started");

        // Здесь отправляем сообщение (Оно будет видно всем пользователям клиентской части.)
        await channel.PublishAsync("first", "Привет, это тест"); 
    }
}

Это был код серверной части. Она отправляет сообщение пользователям.

Теперь приступаем к написанию клиентской части, которая будет принимать и обрабатывать сообщение.

Для наглядности, создаем новый консольный проект. Далее все также скачиваем пакет ably:
Проект >> Управление пакетами Nuget >> Обзор. Пишем "Ably.io", скачиваем.

using IO.Ably;
using IO.Ably.Realtime; // Импротируем библиотеки.


class Program
{
    static async Task Main(string[] args)
    {
        // Подключаемся к ably.
        var ably = new AblyRealtime("YOUR_CODE_ABLY");

        ably.Connection.On(ConnectionEvent.Connected, args =>
        {
            Console.WriteLine("Connected to Ably!");
        });

        // Создаем канал для отправки и получения сообщений.
        var channel = ably.Channels.Get("get-started");
        channel.Subscribe("first", message => // Подписываемся на канал.
        {
            Console.WriteLine("Полученное сообщение: {0}" + message.Data); // {0} - ОБЯЗАТЕЛЬНО!
        });
        Thread.Sleep(50000); // Здесь ожидаем 50 сек. для получаения сообщения. Не идеальный подход, но подойдет для тестового консольного проекта :)
    }
}



Теперь пора создать ключ ably.

Переходим на сайт ably.com, регистрируемся. Нажимаем на "Создать новое приложение", выбираем нужные параметры и создаем. У нас теперь есть самое главное - ключ. В Ably нету ограничений на кол-во отправленных сообщений, что для нас очень хорошо, ведь мы пишем многопользовательский чат.
Скопируйте Ваш API-Ключ, и вставьте в код.

Запустите сначала клиентскую часть, потом серверную.
Если вы все сделали правильно, то сообщение отправится:

Если вы хотите создать именно "Многопользовательский чат", просто нужно объединить две части кода:

using IO.Ably;
using IO.Ably.Realtime;

class Program
{
    static async Task Main(string[] args)
    {
        // Подключаемся.
        var ably = new AblyRealtime("YOUR_CODE_ABLY");

        ably.Connection.On(ConnectionEvent.Connected, args =>
        {
            Console.WriteLine("Подключились!");
        });

        var channel = ably.Channels.Get("get-started");
        channel.Subscribe("first", message =>
        {
            Console.WriteLine("Получено: {0}", message.Data); // {0} - ОБЯЗАТЕЛЬНО!
        });

        // Отправляем сообщение.
        await channel.PublishAsync("first", "Привет, это тест."); 

        // Ждём 1 сек чтоб успеть получить сообщение (не идеальный подход)
        await Task.Delay(1000);

        // Закрываем подключение

        ably.Connection.On(ConnectionEvent.Closed, args =>
        {
            Console.WriteLine("Подключение закрыто!");
        });
    }
}

Добавьте принятие отправки сообщений от лица пользователя - и чат готов!

Надеюсь, Вам понравилась данная статья! Ably - Один из самых простых методов для отправки сообщений, уведомлений. Конечно же, если вы делаете масштабный проект - лучше сделать свой сервер, однако это очень сложно и потребует много времени.

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.