Первый публичный аккаунт этой статьиJava Cat Talk и блог Uncle Cat | MySelf, пожалуйста, укажите источник для перепечатки.
предисловие
Во-первых, для простого чата у каждого должна быть определенная концепция.Здесь мы опускаем объяснение пользовательского модуля, а просто говорим о нескольких функциях чата:Разговор с самим собой, чат с друзьями, групповой чат, автономные сообщенияЖдать.
Демонстрация, которую мы собираемся сделать сегодня, поможет нам сделать это! ! !
Принять кадр
Вся наша демонстрация в основном не требует от вас слишком много времени для достижения вышеуказанных функций.
Во-первых, нам нужно представить структуру, которую мы намерены принять сегодня,InChat: облегченная, высокоэффективная асинхронная коммуникационная среда сетевых приложений, поддерживающая многотерминальный (прикладной и аппаратный IoT)., Используя эту структуру, нам в основном нужно всего два или три класса для реализации функций, которые нам нужны сегодня.
Нужно знать о SSM и SpringBoot?
InChat, сама по себе не зависит от какой-либо базовой платформы, поэтому каждый может реализовать свой собственный чат WebSocket, если он знает базовый язык Java.
Руководство пользователя фреймворка
Подробные инструкции по эксплуатации вы можете посмотреть во введении на официальном сайте:Инструкции по версии InChatV1.1.0
Начать демонстрационную сборку
Создайте пустой проект Maven
Нам не нужно полагаться на другие пакеты Maven, пока достаточно фреймворка, упомянутого в этой статье.
com.github.UncleCatMySelfInChat1.1.0-alpha
Стыковка двух интерфейсов и реализация
Во-первых, платформа предоставляет нашим пользователямСохранение и чтение данныхДа, через реализацию этого интерфейса мы можем получить его асинхронноДанные связи в чате. Здесь InChatMessage — это коммуникационный объект, определяемый платформой.
public class ToDataBaseServiceImpl implements InChatToDataBaseService{
@Override
public Boolean writeMapToDB(InChatMessage message) {
System.out.println(message.toString());
return true;
}
}
Другой интерфейсПроверка входа(Здесь мы рассматриваем модули входа и проверки пользователя, поэтому просто верните true напрямую), и еще одинВозвращает информацию о массиве группового чата.
public class verifyServiceImpl implements InChatVerifyService {
@Override
public boolean verifyToken(String token) {
//登录校验
return true;
}
@Override
public JSONArray getArrayByGroupId(String groupId) {
//根据群聊id获取对应的群聊人员ID
JSONArray jsonArray = JSONArray.parseArray("[\"1111\",\"2222\",\"3333\"]");
return jsonArray;
}
}
Мы можем более подробно остановиться,Получение информации о групповом чате заключается в получении соответствующего массива идентификаторов пользователей через groupId. Мы можем сделать запрос данных самостоятельно.
Код запуска ядра фреймворка
Перейдите непосредственно к коду, а затем мы объясним его.
public class DemoApplication {
public static void main(String[] args) {
//配置InChat配置工厂
ConfigFactory.inChatToDataBaseService = new ToDataBaseServiceImpl();
ConfigFactory.inChatVerifyService = new verifyServiceImpl();
//默认启动InChat
InitServer initServer = new InitServer(new InitNetty());
initServer.open();
//获取用户值
WebSocketChannelService webSocketChannelService = new WebSocketChannelService();
//启动新线程
new Thread(new Runnable() {
@Override
public void run() {
//设定默认服务器发送值
Map map = new HashMap<>();
map.put("server","服务器");
//获取控制台用户想发送的用户Token
Scanner scanner = new Scanner(System.in);
String token = scanner.nextLine();
//获取用户连接
Channel channel = (Channel) webSocketChannelService.getChannel(token);
//调用接口发送
webSocketChannelService.sendFromServer(channel,map);
}
}).start();
}
}
Что ж, вышеизложенное в основном завершило демонстрацию нашего чата, не правда ли, это очень просто! ?
Сначала мы настроим два реализованных класса в фабрику конфигурации фреймворка, а затем запустим фреймворк.Связанные классы предоставляются фреймворком. Следующий поток представляет собой интерфейс фреймворка, который отправляет пользователю информацию об уведомлении от первого лица сервера, ввод «1111», значение токена пользователя демонстрационной демонстрации.
О передней части
InChat: облегченная, высокоэффективная асинхронная коммуникационная среда сетевых приложений, поддерживающая многотерминальный (прикладной и аппаратный IoT)., вы можете перейти непосредственно к этому проекту, чтобы получить главную страницу, или напрямую посетить этот адрес:GitHub.com/uncle cat my S…
Для этой страницы интерфейса нам нужноИзмените свой IP-адрес.
Запустите проект отладки
Затем запустите серверный проект напрямую.Когда мы увидим следующую информацию, проект успешно запущен.
INFO - 服务端启动成功【192.168.1.121:8090】
IP-адрес здесь необходимо заменить на IP-адрес следующего считывателя после запуска.
Затем откройте страницу chat.html прямо в браузере.Для метода js вы можете посмотретьИнструкции по версии InChatV1.1.0.
Эффект операции следующий:
INFO - 服务端启动成功【192.168.1.121:8090】
DEBUG - -Dio.netty.buffer.bytebuf.checkAccessible: true
DEBUG - Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@68ad4247
INFO - [DefaultWebSocketHandler.channelActive]/192.168.1.121:17330链接成功
DEBUG - -Dio.netty.recycler.maxCapacityPerThread: 4096
DEBUG - -Dio.netty.recycler.maxSharedCapacityFactor: 2
DEBUG - -Dio.netty.recycler.linkCapacity: 16
DEBUG - -Dio.netty.recycler.ratio: 8
DEBUG - [id: 0xabb0dbad, L:/192.168.1.121:8090 - R:/192.168.1.121:17330] WebSocket version V13 server handshake
DEBUG - WebSocket version 13 server handshake key: JYErdeATDgbPmgK0mZ+IlQ==, response: YK9ZiJehNP+IwtlkpoVkPt94yWY=
DEBUG - Decoding WebSocket Frame opCode=1
DEBUG - Decoding WebSocket Frame length=31
INFO - [DefaultWebSocketHandler.textdoMessage.LOGIN]
DEBUG - Encoding WebSocket Frame opCode=1 length=33
DEBUG - Decoding WebSocket Frame opCode=1
DEBUG - Decoding WebSocket Frame length=43
INFO - [DefaultWebSocketHandler.textdoMessage.SENDME]
1111
DEBUG - Encoding WebSocket Frame opCode=1 length=28
INFO - 【异步写入数据】
InChatMessage{time=Mon Dec 24 10:03:00 CST 2018, type='sendMe', value='', token='1111', groudId='null', online='null', onlineGroup=null, one='null'}
DEBUG - Decoding WebSocket Frame opCode=1
DEBUG - Decoding WebSocket Frame length=56
INFO - [DefaultWebSocketHandler.textdoMessage.SENDTO]
1111
DEBUG - Encoding WebSocket Frame opCode=1 length=41
INFO - 【异步写入数据】
InChatMessage{time=Mon Dec 24 10:03:01 CST 2018, type='sendTo', value='', token='1111', groudId='null', online='2222', onlineGroup=null, one='2222'}
DEBUG - Decoding WebSocket Frame opCode=1
DEBUG - Decoding WebSocket Frame length=60
INFO - [DefaultWebSocketHandler.textdoMessage.SENDGROUP]
1111
DEBUG - Encoding WebSocket Frame opCode=1 length=59
INFO - 【异步写入数据】
InChatMessage{time=Mon Dec 24 10:03:02 CST 2018, type='sendGroup', value='', token='1111', groudId='2', online='null', onlineGroup=[2222, 3333], one='null'}
1111
DEBUG - Encoding WebSocket Frame opCode=1 length=22
Публичный номер: Java-кот говорит
Нынешний архитектурный дизайнер (код-фермер) и предприимчивый консультант по технологиям, раскованный и посредственный, любит открытый исходный код и рассказывает о жизни программы и нестандартных галантереях.