Как стать автором
Поиск
Написать публикацию
Обновить

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

Уровень сложностиПростой

В этой статье вы узнаете, как создать чат-приложение на 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 - Один из самых простых методов для отправки сообщений, уведомлений. Конечно же, если вы делаете масштабный проект - лучше сделать свой сервер, однако это очень сложно и потребует много времени.

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.