# com.yangc.bridge **Repository Path**: appleat/com.yangc.bridge ## Basic Information - **Project Name**: com.yangc.bridge - **Description**: 基于Mina的消息推送服务器实现 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2015-09-30 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README com.yangc.bridge ================ ### 基于Mina的初级推送服务器实现 Mina - 强大的网络应用程序框架,封装了java nio,基于事件驱动的异步api。
protocol buffer - google的一种数据交换的格式。
实现两种协议方式(通过配置文件进行协议切换,均可达到通信目的): > 1. 自定义协议,协议内容如下;
> 2. 通过protobuf实现,项目中有定义好的proto文件; 在resources文件夹中,有jmeter测试最大连接数的测试用例,目前2w条长连接在线,保持简单的心跳,没有问题! ### 1.RESULT 每个request的发生都要返回对应的response,又称之为响应报文。
> 协议:
0x68 [contentType(0x00)] [uuid] [fromLength] [toLength] [dataLength] [from] [to] 0x68 [success] [data] [crc] 0x16 ### 2.LOGIN 在首次消息发送前,必须先登录,如果多次验证失败,将强制关闭连接;如果绕开登录直接发送消息,也将强制关闭连接。登录成功后,会收到之前未读的离线文本,或者未收到的离线文件。
> 协议:
0x68 [contentType(0x01)] [uuid] 0x68 [usernameLength] [passwordLength] [username] [password] [crc] 0x16 ### 3.CHAT 发送文本,如果接收方没有在线,将转为离线文本,待下次登录时,会接收到。
> 协议:
0x68 [contentType(0x02)] [uuid] [fromLength] [toLength] [dataLength] [from] [to] 0x68 [data] [crc] 0x16 ### 4.READY_FILE 发送文件之前要询问对方是否接收此文件,同时会携带要发送文件的属性信息。如果接收方返回接收,则开始发送文件;如果接收方返回拒绝,则不发送文件。
> 协议:
0x68 [contentType(0x03)] [uuid] [fromLength] [toLength] [from] [to] 0x68 [fileNameLength] [fileName] [fileSize] [crc] 0x16 ### 5.TRANSMIT_FILE 发送文件,如果接收方没有在线,将转为离线文件,待下次登录时,将离线文件推送给接收方。
> 协议:
0x68 [contentType(0x04)] [uuid] [fromLength] [toLength] [dataLength] [from] [to] 0x68 [fileNameLength] [fileName] [fileSize] [fileMd5] [offset] [data] [crc] 0x16 ### 6.HEART 发送心跳,保证连接可用。
> 协议:
0x68 [contentType(0x55)] 0x68 [crc] 0x16 ### Tips: 1.这里说的消息包括:文本、文件。 2.是否支持离线文本,可以配置。 3.支持离线文件,但是不支持断点续传。 4.支持黑名单,白名单的设置。