1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/haiboi-Naruto.WebSocket

Клонировать/Скачать
README.md 4.9 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 01.12.2024 20:18 6f59da0

Naruto.WebSocket

Введение

Этот проект основан на идее Microsoft SignalR и призван помочь быстро понять основные принципы работы SignalR. Используется промежуточное ПО для упаковки WebSocket, что упрощает его использование. Одно устройство может поддерживать до 10 000 подключений, при этом занимая около 220 МБ памяти.

Архитектура программного обеспечения

Архитектура программного обеспечения основана на .Net Core 6.0.

Поддержка

  1. Поддерживает отправку сообщений один-к-одному, групповые сообщения, отправку всем пользователям, отправку конкретному пользователю и кластерное расширение, а также многопользовательский режим.
  2. Поддерживает аутентификацию.
  3. Пользователи могут использовать NarutoWebSocketEvent для обработки событий онлайн- и офлайн-статусов.
  4. В версии кластера по умолчанию используется функция публикации и подписки Redis, но возможны потери сообщений (планируется реализация подтверждения в будущем).
  5. На данный момент поддерживается только отправка текстовых сообщений, планируется обновление до протокола сообщений MessagePack.

Использование

  1. Основной объект NarutoWebSocketService обрабатывает операции приёма сервиса. Пользователю необходимо унаследовать этот объект и реализовать свои методы. Методы должны быть публичными, принимать аргументы без параметров или экземпляры объектов, и возвращать значение типа Task. Также поддерживается DI, жизненный цикл — область действия Scope.
  2. Пример: установите пакет NuGet Naruto.WebSocket и внедрите необходимые сервисы и соответствующие объекты приёма сервисов.
            //注入服务
            services.AddNarutoWebSocket<MyService>(a =>
            {
                a.Path = new PathString("/ws");//websocket的请求路径
                a.AuthorizationFilters.Add(new MyAuthorizationFilters());//追加websocket连接的授权信息
            });
  1. Серверный код также может использовать IClientSend для отправки сообщений.
  2. Для кластерной версии установите пакет NuGet Naruto.WebSocket.Redis и внедрите его.
            //注入集群版需要的服务
            services.AddNarutoWebSocketRedis(a => a.Connection = new string[] { "127.0.0.1:6379" });

  1. Отправка и получение сообщений осуществляются в стандартном формате JSON.
  2. Формат сообщений для отправки и получения клиентом:
     var msg =  {
            action: "send",//调用的后端/前端的方法,大小写必须一致
            message: object//发送的消息内容 消息内容为json对象格式
        }
        webSocket.send(JSON.stringify(msg));
  1. Если действие, отправленное клиентом, равно HeartbeatCheck, это означает выполнение проверки сердцебиения, которую клиент должен выполнять каждые 60 секунд.
  2. Соединение будет разорвано, если действие не может быть найдено на сервере.
  3. Пользователь может активно передать текущий идентификатор соединения WebSocket при создании клиента WebSocket. Если он не передан, сервер автоматически сгенерирует его.
    //主动传递一个连接Id的值ConnectionId
     var webSocket = new WebSocket("ws://localhost:5003/ws?ConnectionId=12345678");

Участие в проекте

  1. Fork этого репозитория.
  2. Создайте ветку Feat_xxx.
  3. Отправьте код.
  4. Создайте Pull Request.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/haiboi-Naruto.WebSocket.git
git@api.gitlife.ru:oschina-mirror/haiboi-Naruto.WebSocket.git
oschina-mirror
haiboi-Naruto.WebSocket
haiboi-Naruto.WebSocket
master