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

OSCHINA-MIRROR/zllang-rockgo

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

7. Бизнес-интерфейсы

7.1 Маршрутные правила

Framework предоставляет маршрутизацию сообщений, и пользователям не нужно вручную сопоставлять методы обработки сообщений. Framework автоматически определяет, является ли функция методом обработки сообщения, на основе следующих условий:

  1. Структура наследует ApiBase.
  2. Функция должна быть экспортируемой функцией структуры.
  3. Функция должна иметь следующую структуру: func (this *XXX) FunctionName(sess *network.Session, message *MessageStruct). Первый параметр — это сессия Session, второй параметр — структура, соответствующая сообщению, framework будет использовать второй параметр для определения того, как обрабатывать соответствующее сообщение.

См.:

//Протокол соответствия словаря рекомендуется использовать инструменты для создания этого файла, чтобы обеспечить точное соответствие между передней и задней частью
//Позже мы предоставим соответствующие инструменты, в настоящее время мы завершили экспорт protobuf в c# и golang протокола соответствия
//После завершения обновления до этого репозитория, поскольку он слишком прост, вы можете сделать это самостоятельно
//Принцип: 1) прочитать файл proto 2) извлечь имя сообщения 3) сгенерировать файлы c#, golang или других языков (строка сращивания) в соответствии с тем же номером

var Testid2mt = map[reflect.Type]uint32{
    reflect.TypeOf(&TestMessage{}):1,
    reflect.TypeOf(&TestLogin{}):2,
    reflect.TypeOf(&PlayerInfo{}):3,
}

//Определение сообщения
type TestMessage struct {
    Name string
}
type TestReply struct {
    Result bool
}

//Определение группы интерфейса
type TestApi struct {
    network.ApiBase         //Наследование ApiBase
}

/*
При использовании интерфейса протокола необходимо сначала инициализировать его, передав при инициализации определённый словарь соответствия сообщений и необходимые компоненты сериализации сообщений. Можно легко переключиться на другие инструменты сериализации, такие как protobuf, msgpack и т. д.
*/
func NewTestApi() *TestApi  {
    r:=&TestApi{}
    r.Instance(r).SetMT2ID(Testid2mt).SetProtocol(&MessageProtocol.JsonProtocol{})
    return r
}

//Протокольный интерфейс 1 Hello, framework автоматически определит тип сообщения TestMessage и автоматически направит его к этой функции для обработки
func (this *TestApi)Hello(sess *network.Session,message *TestMessage) {
    //Печать сообщения
    println(fmt.Sprintf("Hello,%s", message.Name))

    //Ответное сообщение
    res:=&TestReply{
        Result:true,
    }
    this.Reply(sess,res)
}

//Протокольный интерфейс 2 other, аналогично, эта функция обрабатывает сообщения типа Other
func (this *TestApi) Other(sess *network.Session,message *Other) {
    ......
}

7.2 Пользовательский маршрут

Конечно, пользователи могут не использовать встроенные методы маршрутизации сообщений framework. Они могут реализовать интерфейс NetAPI для настройки правил маршрутизации сообщений:

type NetAPI interface {
        Init()                                                                        //Инициализация
    Route(*Session, uint32, []byte)                                               //Десериализация и маршрутизация к функции обработки API
    Reply(session *Session,message interface{})error                              //Сериализация сообщения и отправка клиенту
}

8. Примеры

Пример определения компонента

Клиент Laya для тестирования

Голанг Websocket клиент для тестирования

Конфигурация развёртывания распределённой системы

ECS одноузловая система

Одноузловая система ECS+Actor

TCP/UDP серверный клиент

WebSocket серверный пример

9. Планы

(1) Доработка существующих примеров.

(2) Предоставление игр для больших залов и моделей комнат (например, настольных игр).

(3) Добавление примера клиента Laya.

(4) Добавление примера синхронизации кадров клиента Unity.

(5) Поддержка протокола KCP.

(6) Создание страниц управления фоном и статистики данных.

(7) Плавное обновление узлов.

(8) Предоставление инструмента автоматического сопоставления протоколов protobuf.

10. Заключение

Спасибо за поддержку: gin — gin-gonic, websocket — gorilla, go-component — shadowmint, TarsGo — TarsCloud.

Если вам нравится этот проект, пожалуйста, поставьте звезду.

[RockGO группа обсуждения ①] (уже заполнена, присоединяйтесь к группе ②)

Комментарии ( 0 )

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

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/zllang-rockgo.git
git@api.gitlife.ru:oschina-mirror/zllang-rockgo.git
oschina-mirror
zllang-rockgo
zllang-rockgo
master