实例介绍
J-IM 是用JAVA语言,基于t-io开发的轻量、高性能、单机支持几十万至百万在线用户IM,主要目标降低即时通讯门槛,快速打造低成本接入在线IM系统,通过极简洁的消息格式就可以实现多端不同协议间的消息发送如内置(Http、Websocket、Tcp自定义IM协议)等,并提供通过http协议的api接口进行消息发送无需关心接收端属于什么协议,一个消息格式搞定一切! 前后端分离:前端Vue,后端以springboot框架实现:WebSocket服务器+zookeeper+后端服务器。已实现:群组、图片、红包等扩展功能,群组历史消息使用Redis缓存持久化,List链表格式先进先出滚动保存,每个群组可保留4K条信息。群聊审核、公告、禁言开关、系统广播等。
【实例截图】
【核心代码】
4744300845394918397.rar
├── lb_back_end_eric
│ ├── application.properties
│ ├── lb-im.sql
│ ├── pom.xml
│ ├── root
│ │ └── lb_back_end.log
│ ├── src
│ │ ├── main
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ └── lb
│ │ │ │ ├── citybyip
│ │ │ │ │ └── SelectCityByIp.java
│ │ │ │ ├── common
│ │ │ │ │ └── BasesettingProperties.java
│ │ │ │ ├── config
│ │ │ │ │ ├── mybatis
│ │ │ │ │ │ └── MybatisPlusConfig.java
│ │ │ │ │ ├── redis
│ │ │ │ │ │ └── RedisConfig.java
│ │ │ │ │ ├── shiro
│ │ │ │ │ │ ├── CORSFilter.java
│ │ │ │ │ │ ├── LoginAuthorizationFilter.java
│ │ │ │ │ │ ├── MyInterceptor.java
│ │ │ │ │ │ ├── MySessionManager.java
│ │ │ │ │ │ ├── MyShiroRealm.java
│ │ │ │ │ │ ├── NbPassThruAuthenticationFilter.java
│ │ │ │ │ │ ├── NewRolesAuthorizationFilter.java
│ │ │ │ │ │ ├── RetryLimitCredentialsMatcher.java
│ │ │ │ │ │ └── ShiroConfig.java
│ │ │ │ │ └── swagger
│ │ │ │ │ └── Swagger2Config.java
│ │ │ │ ├── controller
│ │ │ │ │ ├── criteria
│ │ │ │ │ │ ├── BroadcastWsBody.java
│ │ │ │ │ │ ├── GetPacketMessge.java
│ │ │ │ │ │ ├── GetRedPacketList.java
│ │ │ │ │ │ ├── GroupIdenttyCriteria.java
│ │ │ │ │ │ ├── Heartbeat.java
│ │ │ │ │ │ ├── LoginCriteria.java
│ │ │ │ │ │ ├── LoginManageCriteria.java
│ │ │ │ │ │ ├── OpenRedPacket.java
│ │ │ │ │ │ ├── RedpacketCriteria.java
│ │ │ │ │ │ └── UserSettingCriteria.java
│ │ │ │ │ ├── features
│ │ │ │ │ │ └── FeaturesObjController.java
│ │ │ │ │ ├── file
│ │ │ │ │ │ └── FileController.java
│ │ │ │ │ ├── group
│ │ │ │ │ │ └── GroupController.java
│ │ │ │ │ ├── redpacket
│ │ │ │ │ │ ├── redpacketAlgorithm
│ │ │ │ │ │ │ ├── ArithUtil.java
│ │ │ │ │ │ │ └── RedpacketAlgorithm.java
│ │ │ │ │ │ └── RedpacketController.java
│ │ │ │ │ └── user
│ │ │ │ │ └── UserController.java
│ │ │ │ ├── LbApplication.java
│ │ │ │ ├── mapper
│ │ │ │ │ ├── FeaturesObj
│ │ │ │ │ │ ├── AnnouncementMapper.java
│ │ │ │ │ │ └── BroadcastMapper.java
│ │ │ │ │ ├── group
│ │ │ │ │ │ └── GroupMapper.java
│ │ │ │ │ ├── redpacket
│ │ │ │ │ │ ├── PacketUUidMapper.java
│ │ │ │ │ │ ├── redpacketOperation
│ │ │ │ │ │ │ ├── ArithUtil.java
│ │ │ │ │ │ │ └── RedPacketOperation.java
│ │ │ │ │ │ └── UserReceivedMapper.java
│ │ │ │ │ └── user
│ │ │ │ │ ├── IpAddressMapper.java
│ │ │ │ │ └── UserMapper.java
│ │ │ │ ├── model
│ │ │ │ │ ├── common
│ │ │ │ │ │ └── HttpResult.java
│ │ │ │ │ ├── FeaturesObj
│ │ │ │ │ │ ├── Announcement.java
│ │ │ │ │ │ └── Broadcast.java
│ │ │ │ │ ├── group
│ │ │ │ │ │ └── Group.java
│ │ │ │ │ ├── redpacket
│ │ │ │ │ │ ├── PacketUUid.java
│ │ │ │ │ │ └── UserReceived.java
│ │ │ │ │ ├── user
│ │ │ │ │ │ ├── IpAddress.java
│ │ │ │ │ │ ├── User.java
│ │ │ │ │ │ └── ViewUser.java
│ │ │ │ │ └── vo
│ │ │ │ │ ├── GroupObject.java
│ │ │ │ │ └── UserGroup.java
│ │ │ │ ├── provider
│ │ │ │ │ ├── GroupProvider.java
│ │ │ │ │ ├── impl
│ │ │ │ │ │ ├── GroupProviderImpl.java
│ │ │ │ │ │ └── UserProviderImpl.java
│ │ │ │ │ └── UserProvider.java
│ │ │ │ ├── ServerRunner.java
│ │ │ │ ├── service
│ │ │ │ │ ├── FeaturesObj
│ │ │ │ │ │ ├── AnnouncementService.java
│ │ │ │ │ │ ├── BroadcastService.java
│ │ │ │ │ │ └── impl
│ │ │ │ │ │ ├── AnnouncementServiceImpl.java
│ │ │ │ │ │ └── BroadcastServiceImpl.java
│ │ │ │ │ ├── file
│ │ │ │ │ │ ├── FileServiceImpl.java
│ │ │ │ │ │ └── FileService.java
│ │ │ │ │ ├── group
│ │ │ │ │ │ └── GroupService.java
│ │ │ │ │ ├── impl
│ │ │ │ │ │ ├── group
│ │ │ │ │ │ │ └── GroupServiceImpl.java
│ │ │ │ │ │ ├── redpacket
│ │ │ │ │ │ │ ├── PacketUUidServiceImpl.java
│ │ │ │ │ │ │ └── UserReceivedServiceImpl.java
│ │ │ │ │ │ └── user
│ │ │ │ │ │ ├── IpAddressImpl.java
│ │ │ │ │ │ └── UserImpl.java
│ │ │ │ │ ├── redpacket
│ │ │ │ │ │ ├── PacketUUidService.java
│ │ │ │ │ │ └── UserReceivedService.java
│ │ │ │ │ └── user
│ │ │ │ │ ├── IpAddressService.java
│ │ │ │ │ └── UserService.java
│ │ │ │ └── util
│ │ │ │ ├── common
│ │ │ │ │ ├── errer
│ │ │ │ │ │ └── ErrerMsg.java
│ │ │ │ │ └── response
│ │ │ │ │ ├── Message.java
│ │ │ │ │ └── ResponseObj.java
│ │ │ │ ├── exception
│ │ │ │ │ └── ImplException.java
│ │ │ │ ├── exceptionhandler
│ │ │ │ │ └── GlobalExceptionHandler.java
│ │ │ │ ├── FtpUtil.java
│ │ │ │ ├── HttpClientUtil.java
│ │ │ │ ├── Md5Util.java
│ │ │ │ ├── RedisUtil.java
│ │ │ │ ├── SpringUtil.java
│ │ │ │ ├── task
│ │ │ │ │ └── RedpacketTimedtask.java
│ │ │ │ ├── UserUtil.java
│ │ │ │ ├── WebsocketClient.java
│ │ │ │ └── wsRunnable
│ │ │ │ └── WsRunnable.java
│ │ │ └── resources
│ │ │ ├── application-dev.yml
│ │ │ ├── application-prod.yml
│ │ │ └── application.yml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── lb
│ │ ├── Test.java
│ │ └── TestXadminApplication.java
│ └── target
│ ├── classes
│ │ ├── application-dev.yml
│ │ ├── application-prod.yml
│ │ ├── application.yml
│ │ └── com
│ │ └── lb
│ │ ├── citybyip
│ │ │ └── SelectCityByIp.class
│ │ ├── common
│ │ │ └── BasesettingProperties.class
│ │ ├── config
│ │ │ ├── mybatis
│ │ │ │ └── MybatisPlusConfig.class
│ │ │ ├── redis
│ │ │ │ └── RedisConfig.class
│ │ │ ├── shiro
│ │ │ │ ├── CORSFilter.class
│ │ │ │ ├── LoginAuthorizationFilter.class
│ │ │ │ ├── MyInterceptor.class
│ │ │ │ ├── MySessionManager.class
│ │ │ │ ├── MyShiroRealm.class
│ │ │ │ ├── NbPassThruAuthenticationFilter.class
│ │ │ │ ├── NewRolesAuthorizationFilter.class
│ │ │ │ ├── RetryLimitCredentialsMatcher.class
│ │ │ │ └── ShiroConfig.class
│ │ │ └── swagger
│ │ │ ├── Swagger2Config$1.class
│ │ │ └── Swagger2Config.class
│ │ ├── controller
│ │ │ ├── criteria
│ │ │ │ ├── BroadcastWsBody.class
│ │ │ │ ├── GetPacketMessge.class
│ │ │ │ ├── GetRedPacketList.class
│ │ │ │ ├── GroupIdenttyCriteria.class
│ │ │ │ ├── Heartbeat.class
│ │ │ │ ├── LoginCriteria.class
│ │ │ │ ├── LoginManageCriteria.class
│ │ │ │ ├── OpenRedPacket.class
│ │ │ │ ├── RedpacketCriteria.class
│ │ │ │ └── UserSettingCriteria.class
│ │ │ ├── features
│ │ │ │ ├── FeaturesObjController$1.class
│ │ │ │ └── FeaturesObjController.class
│ │ │ ├── file
│ │ │ │ └── FileController.class
│ │ │ ├── group
│ │ │ │ └── GroupController.class
│ │ │ ├── redpacket
│ │ │ │ ├── redpacketAlgorithm
│ │ │ │ │ ├── ArithUtil.class
│ │ │ │ │ └── RedpacketAlgorithm.class
│ │ │ │ └── RedpacketController.class
│ │ │ └── user
│ │ │ └── UserController.class
│ │ ├── LbApplication.class
│ │ ├── mapper
│ │ │ ├── FeaturesObj
│ │ │ │ ├── AnnouncementMapper.class
│ │ │ │ └── BroadcastMapper.class
│ │ │ ├── group
│ │ │ │ └── GroupMapper.class
│ │ │ ├── redpacket
│ │ │ │ ├── PacketUUidMapper.class
│ │ │ │ ├── redpacketOperation
│ │ │ │ │ ├── ArithUtil.class
│ │ │ │ │ └── RedPacketOperation.class
│ │ │ │ └── UserReceivedMapper.class
│ │ │ └── user
│ │ │ ├── IpAddressMapper.class
│ │ │ └── UserMapper.class
│ │ ├── model
│ │ │ ├── common
│ │ │ │ └── HttpResult.class
│ │ │ ├── FeaturesObj
│ │ │ │ ├── Announcement.class
│ │ │ │ └── Broadcast.class
│ │ │ ├── group
│ │ │ │ └── Group.class
│ │ │ ├── redpacket
│ │ │ │ ├── PacketUUid.class
│ │ │ │ └── UserReceived.class
│ │ │ ├── user
│ │ │ │ ├── IpAddress.class
│ │ │ │ ├── User.class
│ │ │ │ └── ViewUser.class
│ │ │ └── vo
│ │ │ ├── GroupObject.class
│ │ │ └── UserGroup.class
│ │ ├── provider
│ │ │ ├── GroupProvider.class
│ │ │ ├── impl
│ │ │ │ ├── GroupProviderImpl.class
│ │ │ │ └── UserProviderImpl.class
│ │ │ └── UserProvider.class
│ │ ├── ServerRunner.class
│ │ ├── service
│ │ │ ├── FeaturesObj
│ │ │ │ ├── AnnouncementService.class
│ │ │ │ ├── BroadcastService.class
│ │ │ │ └── impl
│ │ │ │ ├── AnnouncementServiceImpl.class
│ │ │ │ └── BroadcastServiceImpl.class
│ │ │ ├── file
│ │ │ │ ├── FileService.class
│ │ │ │ └── FileServiceImpl.class
│ │ │ ├── group
│ │ │ │ └── GroupService.class
│ │ │ ├── impl
│ │ │ │ ├── group
│ │ │ │ │ └── GroupServiceImpl.class
│ │ │ │ ├── redpacket
│ │ │ │ │ ├── PacketUUidServiceImpl.class
│ │ │ │ │ └── UserReceivedServiceImpl.class
│ │ │ │ └── user
│ │ │ │ ├── IpAddressImpl.class
│ │ │ │ └── UserImpl.class
│ │ │ ├── redpacket
│ │ │ │ ├── PacketUUidService.class
│ │ │ │ └── UserReceivedService.class
│ │ │ └── user
│ │ │ ├── IpAddressService.class
│ │ │ └── UserService.class
│ │ └── util
│ │ ├── common
│ │ │ ├── errer
│ │ │ │ └── ErrerMsg.class
│ │ │ └── response
│ │ │ ├── Message.class
│ │ │ └── ResponseObj.class
│ │ ├── exception
│ │ │ └── ImplException.class
│ │ ├── exceptionhandler
│ │ │ └── GlobalExceptionHandler.class
│ │ ├── FtpUtil.class
│ │ ├── HttpClientUtil.class
│ │ ├── Md5Util.class
│ │ ├── RedisUtil.class
│ │ ├── SpringUtil.class
│ │ ├── task
│ │ │ └── RedpacketTimedtask.class
│ │ ├── UserUtil.class
│ │ ├── WebsocketClient$1.class
│ │ ├── WebsocketClient.class
│ │ └── wsRunnable
│ │ └── WsRunnable.class
│ ├── lb_back_end-eric-1.0-SNAPSHOT.jar.original
│ ├── maven-archiver
│ │ └── pom.properties
│ ├── maven-status
│ │ └── maven-compiler-plugin
│ │ ├── compile
│ │ │ └── default-compile
│ │ │ ├── createdFiles.lst
│ │ │ └── inputFiles.lst
│ │ └── testCompile
│ │ └── default-testCompile
│ │ ├── createdFiles.lst
│ │ └── inputFiles.lst
│ ├── surefire-reports
│ │ ├── 2019-11-13T15-02-44_045-jvmRun1.dumpstream
│ │ ├── 2019-11-13T15-04-06_504-jvmRun1.dump
│ │ ├── 2019-11-13T15-04-06_504-jvmRun1.dumpstream
│ │ ├── com.lb.TestXadminApplication.txt
│ │ └── TEST-com.lb.TestXadminApplication.xml
│ └── test-classes
│ └── com
│ └── lb
│ ├── Test$1.class
│ ├── Test.class
│ └── TestXadminApplication.class
├── lb_chat
│ ├── chatroom
│ │ ├── chat
│ │ │ ├── BOOT-INF
│ │ │ │ └── classes
│ │ │ │ ├── application.yml
│ │ │ │ └── jim.properties
│ │ │ └── META-INF
│ │ │ ├── MANIFEST.MF
│ │ │ └── maven
│ │ │ └── com.yb
│ │ │ └── chat-beta
│ │ │ ├── pom.properties
│ │ │ └── pom.xml
│ │ ├── pom.xml
│ │ ├── src
│ │ │ ├── main
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ └── lb
│ │ │ │ │ ├── chat
│ │ │ │ │ │ ├── command
│ │ │ │ │ │ │ └── DemoWsHandshakeProcessor.java
│ │ │ │ │ │ ├── listener
│ │ │ │ │ │ │ └── ImDemoGroupListener.java
│ │ │ │ │ │ ├── model
│ │ │ │ │ │ │ ├── user
│ │ │ │ │ │ │ │ └── User.java
│ │ │ │ │ │ │ └── vo
│ │ │ │ │ │ │ └── UserGroup.java
│ │ │ │ │ │ ├── processor
│ │ │ │ │ │ │ ├── FlushUserProcessor.java
│ │ │ │ │ │ │ └── LoginServiceProcessor.java
│ │ │ │ │ │ ├── schedule
│ │ │ │ │ │ │ └── HeartTask.java
│ │ │ │ │ │ ├── service
│ │ │ │ │ │ │ ├── group
│ │ │ │ │ │ │ │ ├── GroupServiceImpl.java
│ │ │ │ │ │ │ │ └── GroupService.java
│ │ │ │ │ │ │ └── user
│ │ │ │ │ │ │ ├── UserServiceImpl.java
│ │ │ │ │ │ │ └── UserService.java
│ │ │ │ │ │ └── util
│ │ │ │ │ │ ├── errer
│ │ │ │ │ │ │ └── ErrerMsg.java
│ │ │ │ │ │ └── response
│ │ │ │ │ │ ├── Message.java
│ │ │ │ │ │ └── ResponseObj.java
│ │ │ │ │ ├── ChatServerApp.java
│ │ │ │ │ ├── provider
│ │ │ │ │ │ ├── GroupProvider.java
│ │ │ │ │ │ └── UserProvider.java
│ │ │ │ │ ├── ServerRunner.java
│ │ │ │ │ └── SpringUtil.java
│ │ │ │ └── resources
│ │ │ │ ├── application.yml
│ │ │ │ ├── jim.properties
│ │ │ │ └── ssl
│ │ │ │ ├── lotchat.nbet-group.com_chain.crt
│ │ │ │ ├── lotchat.nbet-group.com.jks
│ │ │ │ └── lotchat.nbet-group.com_key.key
│ │ │ └── test
│ │ │ └── java
│ │ │ └── com
│ │ │ └── yb
│ │ │ └── chat
│ │ │ └── ChatServerAppTest.java
│ │ └── target
│ │ ├── chat-beta-0.0.1.jar.original
│ │ ├── classes
│ │ │ ├── application.yml
│ │ │ ├── com
│ │ │ │ └── lb
│ │ │ │ ├── chat
│ │ │ │ │ ├── command
│ │ │ │ │ │ └── DemoWsHandshakeProcessor.class
│ │ │ │ │ ├── listener
│ │ │ │ │ │ └── ImDemoGroupListener.class
│ │ │ │ │ ├── model
│ │ │ │ │ │ ├── user
│ │ │ │ │ │ │ └── User.class
│ │ │ │ │ │ └── vo
│ │ │ │ │ │ └── UserGroup.class
│ │ │ │ │ ├── processor
│ │ │ │ │ │ ├── FlushUserProcessor.class
│ │ │ │ │ │ └── LoginServiceProcessor.class
│ │ │ │ │ ├── schedule
│ │ │ │ │ │ └── HeartTask.class
│ │ │ │ │ ├── service
│ │ │ │ │ │ ├── group
│ │ │ │ │ │ │ ├── GroupService.class
│ │ │ │ │ │ │ └── GroupServiceImpl.class
│ │ │ │ │ │ └── user
│ │ │ │ │ │ ├── UserService.class
│ │ │ │ │ │ └── UserServiceImpl.class
│ │ │ │ │ └── util
│ │ │ │ │ ├── errer
│ │ │ │ │ │ └── ErrerMsg.class
│ │ │ │ │ └── response
│ │ │ │ │ ├── Message.class
│ │ │ │ │ └── ResponseObj.class
│ │ │ │ ├── ChatServerApp.class
│ │ │ │ ├── provider
│ │ │ │ │ ├── GroupProvider.class
│ │ │ │ │ └── UserProvider.class
│ │ │ │ ├── ServerRunner.class
│ │ │ │ └── SpringUtil.class
│ │ │ ├── jim.properties
│ │ │ └── ssl
│ │ │ ├── lotchat.nbet-group.com_chain.crt
│ │ │ ├── lotchat.nbet-group.com.jks
│ │ │ └── lotchat.nbet-group.com_key.key
│ │ ├── generated-sources
│ │ │ └── annotations
│ │ ├── generated-test-sources
│ │ │ └── test-annotations
│ │ ├── maven-archiver
│ │ │ └── pom.properties
│ │ ├── maven-status
│ │ │ └── maven-compiler-plugin
│ │ │ ├── compile
│ │ │ │ └── default-compile
│ │ │ │ ├── createdFiles.lst
│ │ │ │ └── inputFiles.lst
│ │ │ └── testCompile
│ │ │ └── default-testCompile
│ │ │ ├── createdFiles.lst
│ │ │ └── inputFiles.lst
│ │ ├── surefire-reports
│ │ │ ├── com.yb.chat.ChatServerAppTest.txt
│ │ │ └── TEST-com.yb.chat.ChatServerAppTest.xml
│ │ └── test-classes
│ │ └── com
│ │ └── yb
│ │ └── chat
│ │ └── ChatServerAppTest.class
│ ├── chatroom.log
│ ├── chat接口文档10-12.docx
│ ├── j-im
│ │ ├── jim-common
│ │ │ ├── pom.xml
│ │ │ └── src
│ │ │ └── main
│ │ │ ├── java
│ │ │ │ └── org
│ │ │ │ └── jim
│ │ │ │ └── common
│ │ │ │ ├── cache
│ │ │ │ │ ├── CacheChangedVo.java
│ │ │ │ │ ├── CacheChangeType.java
│ │ │ │ │ ├── caffeine
│ │ │ │ │ │ ├── CaffeineCache.java
│ │ │ │ │ │ ├── CaffeineCacheManager.java
│ │ │ │ │ │ ├── CaffeineConfig.java
│ │ │ │ │ │ ├── CaffeineConfigurationFactory.java
│ │ │ │ │ │ ├── CaffeineConfiguration.java
│ │ │ │ │ │ ├── caffeine.properties
│ │ │ │ │ │ ├── CaffeineUtils.java
│ │ │ │ │ │ └── DefaultRemovalListener.java
│ │ │ │ │ ├── caffeineredis
│ │ │ │ │ │ ├── CaffeineRedisCache.java
│ │ │ │ │ │ ├── CaffeineRedisCacheManager.java
│ │ │ │ │ │ ├── RedisAsyncRunnable.java
│ │ │ │ │ │ └── RedisL2Vo.java
│ │ │ │ │ ├── ehcache
│ │ │ │ │ │ └── EhcacheConst.java
│ │ │ │ │ ├── ICache.java
│ │ │ │ │ ├── IL2Cache.java
│ │ │ │ │ ├── j2cache
│ │ │ │ │ │ └── J2Cache.java
│ │ │ │ │ └── redis
│ │ │ │ │ ├── ExpireVo.java
│ │ │ │ │ ├── JedisSubscriber.java
│ │ │ │ │ ├── JedisTemplate.java
│ │ │ │ │ ├── RedisCache.java
│ │ │ │ │ ├── RedisCacheManager.java
│ │ │ │ │ ├── RedisConfigurationFactory.java
│ │ │ │ │ ├── RedisConfiguration.java
│ │ │ │ │ ├── RedisExpireUpdateTask.java
│ │ │ │ │ ├── RedisLock.java
│ │ │ │ │ ├── RedissonTemplate.java
│ │ │ │ │ └── SubRunnable.java
│ │ │ │ ├── cluster
│ │ │ │ │ ├── ICluster.java
│ │ │ │ │ ├── ImClusterConfig.java
│ │ │ │ │ ├── ImCluster.java
│ │ │ │ │ ├── ImClusterVo.java
│ │ │ │ │ └── redis
│ │ │ │ │ ├── RedisClusterConfig.java
│ │ │ │ │ └── RedisCluster.java
│ │ │ │ ├── codec
│ │ │ │ │ ├── Decoder.java
│ │ │ │ │ └── Encoder.java
│ │ │ │ ├── CommandStat.java
│ │ │ │ ├── config
│ │ │ │ │ ├── Config.java
│ │ │ │ │ ├── DefaultImConfigBuilder.java
│ │ │ │ │ ├── ImConfigBuilder.java
│ │ │ │ │ └── PropertyImConfigBuilder.java
│ │ │ │ ├── http
│ │ │ │ │ ├── Cookie.java
│ │ │ │ │ ├── GroupContextKey.java
│ │ │ │ │ ├── handler
│ │ │ │ │ │ └── IHttpRequestHandler.java
│ │ │ │ │ ├── HttpConfig.java
│ │ │ │ │ ├── HttpConst.java
│ │ │ │ │ ├── HttpConvertPacket.java
│ │ │ │ │ ├── HttpMultiBodyDecoder.java
│ │ │ │ │ ├── HttpPacket.java
│ │ │ │ │ ├── HttpProtocol.java
│ │ │ │ │ ├── HttpRequestDecoder.java
│ │ │ │ │ ├── HttpRequest.java
│ │ │ │ │ ├── HttpResponseEncoder.java
│ │ │ │ │ ├── HttpResponse.java
│ │ │ │ │ ├── HttpResponseStatus.java
│ │ │ │ │ ├── HttpUuid.java
│ │ │ │ │ ├── KeyValue.java
│ │ │ │ │ ├── listener
│ │ │ │ │ │ └── IHttpServerListener.java
│ │ │ │ │ ├── Method.java
│ │ │ │ │ ├── MimeType.java
│ │ │ │ │ ├── RequestLine.java
│ │ │ │ │ ├── session
│ │ │ │ │ │ └── HttpSession.java
│ │ │ │ │ └── UploadFile.java
│ │ │ │ ├── ImAio.java
│ │ │ │ ├── ImClientGroupContext.java
│ │ │ │ ├── ImConfig.java
│ │ │ │ ├── ImConst.java
│ │ │ │ ├── ImDecoder.java
│ │ │ │ ├── ImPacket.java
│ │ │ │ ├── ImSessionContext.java
│ │ │ │ ├── ImStatus.java
│ │ │ │ ├── jim.properties
│ │ │ │ ├── listener
│ │ │ │ │ ├── AbstractImBindListener.java
│ │ │ │ │ └── ImBindListener.java
│ │ │ │ ├── message
│ │ │ │ │ ├── AbstractMessageHelper.java
│ │ │ │ │ └── MessageHelper.java
│ │ │ │ ├── packets
│ │ │ │ │ ├── ApplyJoinGroupBody.java
│ │ │ │ │ ├── AuthReqBody.java
│ │ │ │ │ ├── AuthRespBody.java
│ │ │ │ │ ├── BannedBody.java
│ │ │ │ │ ├── BroadcastBody.java
│ │ │ │ │ ├── ChangeManagerRespBody.java
│ │ │ │ │ ├── ChatBody.java
│ │ │ │ │ ├── ChatType.java
│ │ │ │ │ ├── Client.java
│ │ │ │ │ ├── CloseReqBody.java
│ │ │ │ │ ├── Command.java
│ │ │ │ │ ├── DelFriendRespBody.java
│ │ │ │ │ ├── DeviceType.java
│ │ │ │ │ ├── ExitGroupNotifyRespBody.java
│ │ │ │ │ ├── FlushUserReqBody.java
│ │ │ │ │ ├── GroupBannedBody.java
│ │ │ │ │ ├── GroupDescriptionBody.java
│ │ │ │ │ ├── GroupIntercalate.java
│ │ │ │ │ ├── Group.java
│ │ │ │ │ ├── GroupUpdateAgentBody.java
│ │ │ │ │ ├── HandshakeBody.java
│ │ │ │ │ ├── HasFriendReqBody.java
│ │ │ │ │ ├── HasFriendRespBody.java
│ │ │ │ │ ├── HeartbeatBody.java
│ │ │ │ │ ├── InsGroupRespBody.java
│ │ │ │ │ ├── JoinGroupResBody.java
│ │ │ │ │ ├── JoinGroupRespBody.java
│ │ │ │ │ ├── JoinGroupRespMsgBody.java
│ │ │ │ │ ├── JoinGroupResult.java
│ │ │ │ │ ├── LoginReqBody.java
│ │ │ │ │ ├── LoginRespBody.java
│ │ │ │ │ ├── Message.java
│ │ │ │ │ ├── MessageReqBody.java
│ │ │ │ │ ├── MsgType.java
│ │ │ │ │ ├── OutGroupBody.java
│ │ │ │ │ ├── RespBody.java
│ │ │ │ │ ├── User.java
│ │ │ │ │ ├── UserMessageData.java
│ │ │ │ │ ├── UserReqBody.java
│ │ │ │ │ └── UserUpdateBody.java
│ │ │ │ ├── protocol
│ │ │ │ │ ├── AbProtocol.java
│ │ │ │ │ ├── IConvertProtocolPacket.java
│ │ │ │ │ └── IProtocol.java
│ │ │ │ ├── Protocol.java
│ │ │ │ ├── session
│ │ │ │ │ └── id
│ │ │ │ │ ├── impl
│ │ │ │ │ │ └── UUIDSessionIdGenerator.java
│ │ │ │ │ └── ISessionIdGenerator.java
│ │ │ │ ├── SessionContext.java
│ │ │ │ ├── Status.java
│ │ │ │ ├── tcp
│ │ │ │ │ ├── TcpConvertPacket.java
│ │ │ │ │ ├── TcpPacket.java
│ │ │ │ │ ├── TcpProtocol.java
│ │ │ │ │ ├── TcpServerDecoder.java
│ │ │ │ │ ├── TcpServerEncoder.java
│ │ │ │ │ └── TcpSessionContext.java
│ │ │ │ ├── utils
│ │ │ │ │ ├── BASE64Util.java
│ │ │ │ │ ├── BufferUtil.java
│ │ │ │ │ ├── ChatKit.java
│ │ │ │ │ ├── DynamicEnumUtil.java
│ │ │ │ │ ├── HttpParseUtils.java
│ │ │ │ │ ├── ImKit.java
│ │ │ │ │ ├── ImUtils.java
│ │ │ │ │ ├── JsonKit.java
│ │ │ │ │ ├── Md5.java
│ │ │ │ │ └── SHA1Util.java
│ │ │ │ └── ws
│ │ │ │ ├── IWsMsgHandler.java
│ │ │ │ ├── Opcode.java
│ │ │ │ ├── WsConst.java
│ │ │ │ ├── WsConvertPacket.java
│ │ │ │ ├── WsPacket.java
│ │ │ │ ├── WsProtocol.java
│ │ │ │ ├── WsRequestPacket.java
│ │ │ │ ├── WsResponsePacket.java
│ │ │ │ ├── WsServerConfig.java
│ │ │ │ ├── WsServerDecoder.java
│ │ │ │ ├── WsServerEncoder.java
│ │ │ │ ├── WsSessionContext.java
│ │ │ │ └── WsTioUuid.java
│ │ │ └── resources
│ │ │ ├── chat.proto
│ │ │ ├── META-INF
│ │ │ │ └── MANIFEST.MF
│ │ │ └── protoc.exe
│ │ ├── jim-parent
│ │ │ ├── _cmd.bat
│ │ │ ├── install.bat
│ │ │ └── pom.xml
│ │ └── jim-server
│ │ ├── pom.xml
│ │ └── src
│ │ └── main
│ │ ├── java
│ │ │ └── org
│ │ │ └── jim
│ │ │ └── server
│ │ │ ├── command
│ │ │ │ ├── AbstractCmdHandler.java
│ │ │ │ ├── CmdHandler.java
│ │ │ │ ├── CommandConfigurationFactory.java
│ │ │ │ ├── CommandConfiguration.java
│ │ │ │ ├── CommandManager.java
│ │ │ │ ├── command.properties
│ │ │ │ └── handler
│ │ │ │ ├── AuthReqHandler.java
│ │ │ │ ├── BannedReqHandler.java
│ │ │ │ ├── BannedStateReqHandler.java
│ │ │ │ ├── BroadcastReqHandler.java
│ │ │ │ ├── ChatCheckedReqHandler.java
│ │ │ │ ├── ChatCheckHisReqHandler.java
│ │ │ │ ├── ChatCheckingReqHandler.java
│ │ │ │ ├── ChatReqHandler.java
│ │ │ │ ├── CloseReqHandler.java
│ │ │ │ ├── FlushUserReqHandler.java
│ │ │ │ ├── HandshakeReqHandler.java
│ │ │ │ ├── HasFriendHandler.java
│ │ │ │ ├── HeartbeatReqHandler.java
│ │ │ │ ├── JoinGroupReqHandler.java
│ │ │ │ ├── LoginReqHandler.java
│ │ │ │ ├── MessageReqHandler.java
│ │ │ │ ├── processor
│ │ │ │ │ ├── chat
│ │ │ │ │ │ ├── AsyncChatMessageProcessor.java
│ │ │ │ │ │ ├── BaseAsyncChatMessageProcessor.java
│ │ │ │ │ │ ├── ChatCmdProcessor.java
│ │ │ │ │ │ ├── DefaultAsyncChatMessageProcessor.java
│ │ │ │ │ │ └── MsgQueueRunnable.java
│ │ │ │ │ ├── CmdProcessor.java
│ │ │ │ │ ├── flushuser
│ │ │ │ │ │ └── FlushUserServiceProcessor.java
│ │ │ │ │ ├── group
│ │ │ │ │ │ └── GroupCmdProcessor.java
│ │ │ │ │ ├── handshake
│ │ │ │ │ │ ├── HandshakeCmdProcessor.java
│ │ │ │ │ │ ├── TcpHandshakeProcessor.java
│ │ │ │ │ │ └── WsHandshakeProcessor.java
│ │ │ │ │ └── login
│ │ │ │ │ └── LoginCmdProcessor.java
│ │ │ │ └── UserReqHandler.java
│ │ │ ├── handler
│ │ │ │ ├── AbstractProtocolHandler.java
│ │ │ │ ├── ImServerAioHandler.java
│ │ │ │ ├── ProtocolHandlerConfigurationFactory.java
│ │ │ │ ├── ProtocolHandlerConfiguration.java
│ │ │ │ ├── ProtocolHandlerManager.java
│ │ │ │ └── protocol_handler.properties
│ │ │ ├── helper
│ │ │ │ ├── db
│ │ │ │ │ └── MysqlMessageHelper.java
│ │ │ │ └── redis
│ │ │ │ ├── RedisImBindListener.java
│ │ │ │ └── RedisMessageHelper.java
│ │ │ ├── http
│ │ │ │ ├── annotation
│ │ │ │ │ └── RequestPath.java
│ │ │ │ ├── api
│ │ │ │ │ ├── HttpApiController.java
│ │ │ │ │ ├── TestController.java
│ │ │ │ │ └── WebImController.java
│ │ │ │ ├── DefaultHttpRequestHandler.java
│ │ │ │ ├── FileCache.java
│ │ │ │ ├── HttpProtocolHandler.java
│ │ │ │ └── mvc
│ │ │ │ └── Routes.java
│ │ │ ├── ImServerGroupContext.java
│ │ │ ├── ImServerStarter.java
│ │ │ ├── listener
│ │ │ │ ├── ImGroupListener.java
│ │ │ │ └── ImServerAioListener.java
│ │ │ ├── tcp
│ │ │ │ └── TcpProtocolHandler.java
│ │ │ ├── util
│ │ │ │ ├── ClassUtils.java
│ │ │ │ ├── HttpResps.java
│ │ │ │ ├── HttpServerUtils.java
│ │ │ │ └── TimerTaskUtil.java
│ │ │ └── ws
│ │ │ ├── WsMsgHandler.java
│ │ │ └── WsProtocolHandler.java
│ │ └── resources
│ │ ├── app.properties
│ │ ├── logback213123.properties
│ │ └── logback22222.xml
│ ├── LICENSE
│ └── README.md
├── lb-im.sql
├── vueworkspace
│ ├── chat-manage
│ │ ├── build
│ │ │ ├── build.js
│ │ │ ├── check-versions.js
│ │ │ ├── logo.png
│ │ │ ├── utils.js
│ │ │ ├── vue-loader.conf.js
│ │ │ ├── webpack.base.conf.js
│ │ │ ├── webpack.dev.conf.js
│ │ │ └── webpack.prod.conf.js
│ │ ├── config
│ │ │ ├── dev.env.js
│ │ │ ├── index.js
│ │ │ └── prod.env.js
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── package-lock.json
│ │ ├── README.md
│ │ ├── src
│ │ │ ├── api
│ │ │ │ └── index.js
│ │ │ ├── App.vue
│ │ │ ├── assets
│ │ │ │ ├── base.css
│ │ │ │ └── logo.png
│ │ │ ├── components
│ │ │ │ ├── home.vue
│ │ │ │ └── login.vue
│ │ │ ├── main.js
│ │ │ └── router
│ │ │ └── index.js
│ │ └── static
│ ├── chat-mobile
│ │ ├── build
│ │ │ ├── build.js
│ │ │ ├── check-versions.js
│ │ │ ├── logo.png
│ │ │ ├── utils.js
│ │ │ ├── vue-loader.conf.js
│ │ │ ├── webpack.base.conf.js
│ │ │ ├── webpack.dev.conf.js
│ │ │ └── webpack.prod.conf.js
│ │ ├── config
│ │ │ ├── dev.env.js
│ │ │ ├── index.js
│ │ │ └── prod.env.js
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── package-lock.json
│ │ ├── README.md
│ │ ├── src
│ │ │ ├── api
│ │ │ │ └── index.js
│ │ │ ├── App.vue
│ │ │ ├── assets
│ │ │ │ ├── css
│ │ │ │ │ └── base.css
│ │ │ │ ├── font
│ │ │ │ │ ├── iconfont.css
│ │ │ │ │ ├── iconfont.eot
│ │ │ │ │ ├── iconfont.svg
│ │ │ │ │ ├── iconfont.ttf
│ │ │ │ │ ├── iconfont.woff
│ │ │ │ │ └── iconfont.woff2
│ │ │ │ └── img
│ │ │ │ ├── hongbao.png
│ │ │ │ ├── iconbg.png
│ │ │ │ ├── kefu.png
│ │ │ │ ├── login_bg.png
│ │ │ │ ├── meetredbag.png
│ │ │ │ ├── null.jpg
│ │ │ │ └── successredbag.png
│ │ │ ├── components
│ │ │ │ ├── editUserInfo.vue
│ │ │ │ ├── Emotion
│ │ │ │ │ ├── Emotion.vue
│ │ │ │ │ └── index.vue
│ │ │ │ ├── home.vue
│ │ │ │ ├── login.vue
│ │ │ │ ├── register.vue
│ │ │ │ ├── status.vue
│ │ │ │ └── userdata.vue
│ │ │ ├── main.js
│ │ │ ├── mixins
│ │ │ │ └── index.js
│ │ │ ├── router
│ │ │ │ └── index.js
│ │ │ └── store
│ │ │ └── index.js
│ │ └── static
│ └── chat-pc
│ ├── build
│ │ ├── build.js
│ │ ├── check-versions.js
│ │ ├── utils.js
│ │ ├── vue-loader.conf.js
│ │ ├── webpack.base.conf.js
│ │ ├── webpack.dev.conf.js
│ │ └── webpack.prod.conf.js
│ ├── config
│ │ ├── dev.env.js
│ │ ├── index.js
│ │ └── prod.env.js
│ ├── index.html
│ ├── package.json
│ ├── package-lock.json
│ ├── README.md
│ ├── src
│ │ ├── api
│ │ │ └── index.js
│ │ ├── App.vue
│ │ ├── assets
│ │ │ ├── css
│ │ │ │ └── base.css
│ │ │ ├── font
│ │ │ │ ├── iconfont.css
│ │ │ │ ├── iconfont.eot
│ │ │ │ ├── iconfont.svg
│ │ │ │ ├── iconfont.ttf
│ │ │ │ ├── iconfont.woff
│ │ │ │ └── iconfont.woff2
│ │ │ └── images
│ │ │ ├── bg10.jpg
│ │ │ ├── bg11.jpg
│ │ │ ├── bg12.jpg
│ │ │ ├── bg13.jpg
│ │ │ ├── bg14.jpg
│ │ │ ├── bg15.jpg
│ │ │ ├── bg1.jpg
│ │ │ ├── bg2.jpg
│ │ │ ├── bg3.jpg
│ │ │ ├── bg4.jpg
│ │ │ ├── bg5.jpg
│ │ │ ├── bg6.jpg
│ │ │ ├── bg7.jpg
│ │ │ ├── bg8.jpg
│ │ │ ├── bg9.jpg
│ │ │ ├── checkin.png
│ │ │ ├── hongbao.png
│ │ │ ├── laba.png
│ │ │ ├── left-icon.png
│ │ │ ├── level_0.png
│ │ │ ├── level_10.png
│ │ │ ├── level_11.png
│ │ │ ├── level_12.png
│ │ │ ├── level_13.png
│ │ │ ├── level_14.png
│ │ │ ├── level_15.png
│ │ │ ├── level_16.png
│ │ │ ├── level_17.png
│ │ │ ├── level_18.png
│ │ │ ├── level_1.png
│ │ │ ├── level_2.png
│ │ │ ├── level_3.png
│ │ │ ├── level_4.png
│ │ │ ├── level_5.png
│ │ │ ├── level_6.png
│ │ │ ├── level_7.png
│ │ │ ├── level_8.png
│ │ │ ├── level_9.png
│ │ │ ├── login_bg.png
│ │ │ ├── logo.png
│ │ │ ├── malert.png
│ │ │ ├── meetredbag.png
│ │ │ ├── null.gif
│ │ │ ├── null.jpg
│ │ │ ├── nuoyun_kf.png
│ │ │ ├── profile_bg4.jpg
│ │ │ ├── qrcode.png
│ │ │ ├── right-icon.png
│ │ │ ├── sent.png
│ │ │ ├── skin10.jpg
│ │ │ ├── skin11.jpg
│ │ │ ├── skin12.jpg
│ │ │ ├── skin13.jpg
│ │ │ ├── skin14.jpg
│ │ │ ├── skin15.jpg
│ │ │ ├── skin1.jpg
│ │ │ ├── skin2.jpg
│ │ │ ├── skin3.jpg
│ │ │ ├── skin4.jpg
│ │ │ ├── skin5.jpg
│ │ │ ├── skin6.jpg
│ │ │ ├── skin7.jpg
│ │ │ ├── skin8.jpg
│ │ │ ├── skin9.jpg
│ │ │ └── successredbag.png
│ │ ├── components
│ │ │ ├── calendar.vue
│ │ │ ├── changepaw.vue
│ │ │ ├── customer.vue
│ │ │ ├── Emotion
│ │ │ │ ├── Emotion.vue
│ │ │ │ └── index.vue
│ │ │ ├── home.vue
│ │ │ ├── keyboard.vue
│ │ │ ├── login.vue
│ │ │ ├── register.vue
│ │ │ ├── userdata.vue
│ │ │ ├── usereditor.vue
│ │ │ ├── usersetting.vue
│ │ │ └── user.vue
│ │ ├── main.js
│ │ ├── mixins
│ │ │ └── index.js
│ │ ├── router
│ │ │ └── index.js
│ │ └── store
│ │ └── index.js
│ ├── static
│ ├── y
│ └── y.pub
└── 单服务器部署聊天室示例.txt
300 directories, 674 files
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论