7. Бизнес-интерфейсы
7.1 Маршрутные правила
Framework предоставляет маршрутизацию сообщений, и пользователям не нужно вручную сопоставлять методы обработки сообщений. 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. Примеры
Голанг 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 )