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

OSCHINA-MIRROR/Foldcc-UJCat

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

UJCat

UJCat — это минималистичный сетевой фреймворк для разработчиков на основе Netty 4.

Проект в разработке:

«Из-за работы у меня почти нет времени на разработку этого проекта. В дальнейшем проект будет развиваться в направлении создания сетевых коммуникаций для игр. Благодарю за внимание и поддержку».

Описание:

«Вам нужна сетевая коммуникация, но вы не знаете, как работать с socket? Не проблема!»

Фреймворк UJCat практически не требует настройки сетевого уровня при использовании. Цель фреймворка — дать разработчикам возможность сосредоточиться на бизнес-логике, а не на сетевом уровне. Фреймворк подходит для начинающих разработчиков, работающих с сокетами, или небольших проектов, где требуется сокетная связь.

Как использовать:

«Будет ли сложно использовать или интегрировать фреймворк с моим проектом?»

Нет, фреймворк использует рефлексию для подключения к сетевому и бизнес-уровню. Разработчику нужно только унаследовать класс бизнес-логики фреймворка. Бизнес-класс не представляет сложности, нужно лишь реализовать три метода обратного вызова:

  • msgService(String var1, String var2) — вызывается после получения сообщения. var1 — код протокола сообщения (строковый тип), var2 — содержимое сообщения. UJCat автоматически вызывает этот метод при получении сообщения, и разработчик может поместить сюда свою логику обработки сообщений.
  • exception(int var1) — автоматически вызывается при возникновении ошибки соединения. Параметр var1 содержит информацию об ошибке. Разработчик может использовать этот метод для обработки ошибок соединения, таких как отключение сети или разрыв соединения.
  • active() — автоматически вызывается после успешного установления соединения.

Кроме этих трёх обязательных методов, есть ещё один метод отправки сообщений: sendMsg(String head, String body). Для отправки сообщения достаточно вызвать этот метод, передав параметры head (заголовок сообщения) и body (содержимое сообщения).

Помимо основных методов, существует свойство userKey, которое может быть полезно разработчикам. Каждый объект, наследующий класс бизнес-логики, получает уникальный ключ при успешном соединении. Этот ключ можно использовать для управления объектами сетевого соединения или пользователями сервера.

Пример кода:

В качестве примера рассмотрим простой сервер, который просто возвращает полученное сообщение пользователю. Обратите внимание, что класс бизнес-логики сервера называется MessageSelect. Клиентский класс бизнес-логики называется ClientService. Оба класса имеют одинаковые характеристики, и разработчику необходимо выбрать, какой из них наследовать. Вот пример кода:

public class TestServerSelect extends MessageSelect {
    
        @Override
    	public void msgService(String var1, String var2) {
    		System.out.println("Пользователь " + userKey + " отправил сообщение: [заголовок] " + var1 + "   [содержимое] " + var2);
    		sendMsg("0", "Сервер получил ваше сообщение! : " + var2);
    	}
    
    	@Override
	public void exception(int var1) {
		System.out.println("Пользователь " + userKey + " разорвал соединение с сервером");
	}

    	@Override
    	public void active() {
    		System.out.println("Пользователь " + userKey + " подключился к серверу");
    	}
    }

Это весь код для сервера. Простота очевидна.

Теперь запустим сервер. Ниже приведён пример кода запуска:

public static void main(String[] args) throws InterruptedException {
    // Создаём объект сервера
	UJServer b = new UJServer();
    // Устанавливаем порт и добавляем класс бизнес-логики
    b.setServer(8099, TestServerSelect.class);
    // Запускаем сервер
    b.ServiceStart();
}

Сервер прослушивает порт 8099 и добавляет класс бизнес-логики. Затем он запускается. Далее я проведу тестирование сервера с помощью клиента. Код клиента не приводится, так как его логика аналогична серверной. Нужно написать класс бизнес-логики и добавить его в клиентский класс перед запуском.

На следующих изображениях показаны этапы работы сервера: запуск, подключение клиента и отправка клиентом сообщения с последующим отключением.

[1]: https://s1.ax1x.com/2017/11/22/2xrKe.png «Запуск сервера» [2]: https://s1.ax1x.com/2017/11/22/2xybd.png «Подключение клиента» [3]: https://s1.ax1x.com/2017/11/22/2xcVA.png «Отправка клиентом сообщения и отключение»

Вот пример простого сервера ответов.

Важные замечания:

Между клиентом и сервером фреймворка UJCat есть этап шифрования и дешифрования данных. Шифровальщик и дешифратор включены в проект. Если вы используете только серверную или клиентскую часть, другой стороне потребуется реализовать шифрование и аутентификацию.

Заключение:

Этот сервер имеет ограничение на тип сообщений, которые могут быть обработаны, — они должны быть строками. Это упрощает работу, но снижает производительность. Благодаря использованию Netty 4, сервер обеспечивает стабильность и надёжность при работе с большим количеством пользователей и высокой нагрузкой. Фреймворк подойдёт для небольших проектов или новичков, желающих создать сетевые коммуникации. Это ранняя версия, которая будет улучшаться и становиться более стабильной и удобной в использовании. Планируется обновление версии для Unity и дальнейшее развитие API. Надеюсь на вашу поддержку!

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

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

Введение

Это очень простая в освоении сетевая коммуникационная структура, основанная на Netty 4. Развернуть Свернуть
Отмена

Обновления

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

Участники

все

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

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