Примечание. В этой статье не объясняются некоторые базовые знания в области сетевого программирования (например, полуприкрепленные пакеты, семиуровневые протоколы и т. д.). Предполагается, что вы научились использовать Netty или понимаете сетевое программирование.
1. Тио и Нетти 🎨
как мы все знаем Netty
как NIO
Фреймворк веб-приложений может помочь нам Быстро разрабатывать высокопроизводительные и стабильные сетевые коммуникационные услуги.,Его сила быласуществовать Различные известные технологии(нравитьсяDubbo、RocketMQ)отражено в。В Интернете ходили слухи хочу бытьодин человекпередовойинженер,NettyЭто будет стек технологий, которым вы должны овладеть.。
и Tio
Обычно относится к Тио-ядро, оно есть основеAIO
основа сетевого программирования,иNetty
Принадлежность к тому же виду.
Netty
Он уже очень мощный, так как же его использовать? Tio
Шерстяная ткань?
GTIEE
На официальном сайте есть предложение:Сетевое программирование — это горько, но после использования t-io оно будет сладким.。Tio
Это фреймворк, абстрагированный от проекта, поэтому Tio
Предоставляет больше API-интерфейсов, связанных с бизнесом, обычно имеющих следующие функции и возможности:
мы используем Tio
На самом деле есть Широкое использование различных методов класса Tio.,Давайте сначала разберемся с некоторыми методами и базовыми классами.
Привязка ресурсов означает объединение бизнес-данных с Tcpсоединять
(Прямо сейчасChannelContext)связанный,аналогиянравитьсяChannelContext-AПредставляет пользователя Чжан Сан,Идентификатор пользователя Чжан Саня — 1.
(Что такое ChannelContext в 2.3
(объяснено в)
// t-io в настоящее время имеет 4 встроенных привязки ресурсов.
// Привязать пользователя
Tio.bindUser(ChannelContext-A, "1");
// Привязать токен
Tio.bindToken(ChannelContext-A, "fdsafd1513f1dasf15");
// Привязать группу нравиться идентификатор пользователя ПК
Tio.bindGroup(ChannelContext-A, "pc-1");
// Привязать идентификатор компании
Tio.bindBsId(ChannelContext-A, "30001");
Раз есть привязка, то обязательно будет и отвязка. Это операция, обратная привязке.
/**
* Отменить привязку идентификатора компании
* @param channelContext
*/
public static void unbindBsId(ChannelContext channelContext) {
channelContext.tioConfig.bsIds.unbind(channelContext);
}
/**
* Отсоединиться от всех групп
* @param channelContext
*/
public static void unbindGroup(ChannelContext channelContext) {
channelContext.tioConfig.groups.unbind(channelContext);
}
/**
* Отменить привязку к указанной группе
* @param group
* @param channelContext
*/
public static void unbindGroup(String group, ChannelContext channelContext) {
channelContext.tioConfig.groups.unbind(group, channelContext);
}
/**
* Отвязать токен от ChannelContext
* @param channelContext
*/
public static void unbindToken(ChannelContext channelContext) {
channelContext.tioConfig.tokens.unbind(channelContext);
}
// org.tio.core.TioConfig.ipBlacklist
/**
* Отменить привязку идентификатора пользователя ChannelContext
* @param channelContext
*/
public static void unbindUser(ChannelContext channelContext) {
channelContext.tioConfig.users.unbind(channelContext);
}
/**
* Отвязать идентификатор пользователя. Обычно используется для входа в систему из нескольких мест и отказа от предыдущего сценария входа в систему.
* @param tioConfig
* @param userid
*/
public static void unbindUser(TioConfig tioConfig, String userid) {
tioConfig.users.unbind(tioConfig, userid);
}
существовать Tio
Установление каждого TCP-соединения будет генерировать объект ChannelContext, который является абстрактным классом. Если вы используете t-io в качестве tcp-клиента, то это ClientChannelContext. Если вы используете tio в качестве tcp-сервера, то это так. ServerChannelContext.
ChannelContext — это Tio
Очень важный класс, это коммуникационный мост между бизнесом и связями.
Tio
отступить Прямо сейчасвозвращаться,Пакет не был отправлен при возврате,и Только что отправлено в очередь на отправку2.6
Объясните в2.5
Объясните вTio
Отправьте пакет другой стороне перед возвратом.2.6
Объясните в2.5
Объясните вВы можете увидеть способ отправки выше.,Будь то асинхронный или блокирующий,Для списков параметров требуется объект TioConfig.,Так что же это такое?
сцена:нассуществовать ПисатьTCP Сервер сначала выберет порт для прослушивания клиентских подключений, а затем создаст N групп пулов потоков для выполнения связанных задач, таких как отправка сообщений, декодирование пакетов данных, обработка пакетов данных и т. д. Также необходимо поддерживать различные данные клиентских подключений. Для взаимодействия с бизнесом эти клиентские подключения должны быть привязаны к различным бизнес-данным, таким как привязка клиента к группе и идентификатору пользователя, привязка к токену и т. д. .
TioConfig решает вышеперечисленные сценарии: настройку пулов потоков, прослушивание портов, ведение различных клиентских данных и т. д.
Как упоминалось выше, TCPсоединятьто есть объект ChannelContext, и каждому объекту иChannelContext соответствует соответствующий объект TioConfig. Мы вызываем метод отправки сообщения и передаем его. TioConfig то есть Различные данные и конфигурации, соответствующие этому пользователю (tcp-соединение).
Пакет используется для выражения структуры бизнеса.,наспроходитьнаследоватьPacketреализовать свой собственный бизнесданныеструктура,Для всех вас,Просто думайте о Packet как об обычном VOобъекте.
Уведомление:Не рекомендуется для прямого использования.Packetобъект,иэтонаследоватьPacket