网站首页logo怎么修改,优化方案英语答案,泰安人才网最新招聘信息,企业网站建设的意义和效果前言首先对于一个简单的聊天室#xff0c;大家应该都有一定的概念了#xff0c;这里我们省略用户模块的讲解#xff0c;而是单纯的先说说聊天室的几个功能#xff1a;自我对话、好友交流、群聊、离线消息等。今天我们要做的demo就能帮我们做到这一点啦#xff01;#xf…前言首先对于一个简单的聊天室大家应该都有一定的概念了这里我们省略用户模块的讲解而是单纯的先说说聊天室的几个功能自我对话、好友交流、群聊、离线消息等。今天我们要做的demo就能帮我们做到这一点啦采用框架我们整个Demo基本不需要大家花费太多时间就可以实现以上的几个功能。首先我们需要介绍一下我们今天打算采用的框架InChat : 一个轻量级、高效率的支持多端(应用与硬件Iot)的异步网络应用通讯框架采用这个框架我们基本上只需要两三个类就可以实现我们今天需要的功能了。需要了解SSM SpringBoot 吗InChat 本身不依赖于任何的底层框架所以大家只要会基本的Java语言就可以实现一套自己的WebSocket聊天室。框架使用手册关于详细的手册说明大家可以看看官网的介绍InChatV1.1.0版本使用说明开始Demo搭建构建一个空的Maven项目我们不需要依赖其他的Maven包只要本文提及的框架即可。com.github.UncleCatMySelfInChat1.1.0-alpha对接两个接口与实现一个是框架提供给我们用户进行数据保存与读取的通过这个接口的实现我们可以异步拿到每个聊天的通信数据。这里的InChatMessage是一个框架自定义的通信对象。public class ToDataBaseServiceImpl implements InChatToDataBaseService{Overridepublic Boolean writeMapToDB(InChatMessage message) {System.out.println(message.toString());return true;}}还有一个接口是对登录的校验(这里我们审理用户登录与校验模块所以直接返回true即可)还有一个是返回群聊的数组信息。public class verifyServiceImpl implements InChatVerifyService {Overridepublic boolean verifyToken(String token) {//登录校验return true;}Overridepublic JSONArray getArrayByGroupId(String groupId) {//根据群聊id获取对应的群聊人员IDJSONArray jsonArray JSONArray.parseArray([\1111\,\2222\,\3333\]);return jsonArray;}}我们可以再详细的说下获取群聊信息是通过一个groupId来获取对应的用户Id数组我们可以自己做一个数据查询。核心的框架启动代码直接上代码然后我们再讲解一下。public class DemoApplication {public static void main(String[] args) {//配置InChat配置工厂ConfigFactory.inChatToDataBaseService new ToDataBaseServiceImpl();ConfigFactory.inChatVerifyService new verifyServiceImpl();//默认启动InChatInitServer initServer new InitServer(new InitNetty());initServer.open();//获取用户值WebSocketChannelService webSocketChannelService new WebSocketChannelService();//启动新线程new Thread(new Runnable() {Overridepublic void run() {//设定默认服务器发送值Map map new HashMap();map.put(server,服务器);//获取控制台用户想发送的用户TokenScanner scanner new Scanner(System.in);String token scanner.nextLine();//获取用户连接Channel channel (Channel) webSocketChannelService.getChannel(token);//调用接口发送webSocketChannelService.sendFromServer(channel,map);}}).start();}}好了以上已经基本完成了我们的聊天室Demo了是不是很简单首先我们将实现的两个类配置到框架的配置工厂中然后启动框架即可相关的类都是框架提供的。下面的线程是一个框架的接口以服务器第一人称发送给针对用户通知信息输入“1111”Demo演示的用户token值。关于前端对于这个前端页面我们需要更改一下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: trueDEBUG - Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector68ad4247INFO - [DefaultWebSocketHandler.channelActive]/192.168.1.121:17330链接成功DEBUG - -Dio.netty.recycler.maxCapacityPerThread: 4096DEBUG - -Dio.netty.recycler.maxSharedCapacityFactor: 2DEBUG - -Dio.netty.recycler.linkCapacity: 16DEBUG - -Dio.netty.recycler.ratio: 8DEBUG - [id: 0xabb0dbad, L:/192.168.1.121:8090 - R:/192.168.1.121:17330] WebSocket version V13 server handshakeDEBUG - WebSocket version 13 server handshake key: JYErdeATDgbPmgK0mZIlQ, response: YK9ZiJehNPIwtlkpoVkPt94yWYDEBUG - Decoding WebSocket Frame opCode1DEBUG - Decoding WebSocket Frame length31INFO - [DefaultWebSocketHandler.textdoMessage.LOGIN]DEBUG - Encoding WebSocket Frame opCode1 length33DEBUG - Decoding WebSocket Frame opCode1DEBUG - Decoding WebSocket Frame length43INFO - [DefaultWebSocketHandler.textdoMessage.SENDME]1111DEBUG - Encoding WebSocket Frame opCode1 length28INFO - 【异步写入数据】InChatMessage{timeMon Dec 24 10:03:00 CST 2018, typesendMe, value, token1111, groudIdnull, onlinenull, onlineGroupnull, onenull}DEBUG - Decoding WebSocket Frame opCode1DEBUG - Decoding WebSocket Frame length56INFO - [DefaultWebSocketHandler.textdoMessage.SENDTO]1111DEBUG - Encoding WebSocket Frame opCode1 length41INFO - 【异步写入数据】InChatMessage{timeMon Dec 24 10:03:01 CST 2018, typesendTo, value, token1111, groudIdnull, online2222, onlineGroupnull, one2222}DEBUG - Decoding WebSocket Frame opCode1DEBUG - Decoding WebSocket Frame length60INFO - [DefaultWebSocketHandler.textdoMessage.SENDGROUP]1111DEBUG - Encoding WebSocket Frame opCode1 length59INFO - 【异步写入数据】InChatMessage{timeMon Dec 24 10:03:02 CST 2018, typesendGroup, value, token1111, groudId2, onlinenull, onlineGroup[2222, 3333], onenull}1111DEBUG - Encoding WebSocket Frame opCode1 length22