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