服务(Serv)
服务(Serv)是一套基于 NIO 实现的通讯服务框架,提供 TCP、UDP 协议的客户端与服务端封装,灵活的消息监听与消息内容编/解码,简约的配置使二次开发更加便捷。同时针对客户端提供默认的断线重连、链路维护(心跳)等服务支持,您只需了解业务即可轻松完成开发工作。
Maven包依赖
<dependency>
<groupId>net.ymate.platform</groupId>
<artifactId>ymate-platform-serv</artifactId>
<version>2.1.4</version>
</dependency>
基础概念
会话(Session)
用于客户端与服务端之间连接状态的维护和消息发送的对象。
编/解码器(Codec)
目前提供以下三种编/解码器,开发者可通过实现 ICodec 接口自行扩展。
- ByteArrayCodec:采用字节
byte[4]作为消息头,用于记录消息体长度字节数组消息编/解码器。 - NioStringCodec:通过继承
ByteArrayCodec类实现的字符串消息编/解码器。 - TextLineCodec:用于解析以回车换行符
\r\n做为消息结束标志的字符串消息的编/解码器。
内置服务(Service)
目前提供以下两种内置服务,更多服务在不断完善中...
-
IHeartbeatService:内置链路维护(心跳)服务,该服务将在与服务端成功建立连接后按参数配置的时间间隔向服务端发送心跳消息(心跳消息内容默认为
0字符,心跳消息内容可以通过自定义参数heartbeat_message设置)。 -
IReconnectService:内置断线重连服务,当服务的连接状态异常时将尝试重新与服务端建立连接。
服务端(Server)
配置参数 说明
| 配置项 | 描述 |
|---|---|
| serverName | 服务名称 |
| serverHost | 主机名称或IP地址 |
| port | 服务监听端口 |
| charset | 编解码字符集,默认为 UTF-8 |
| bufferSize | 缓冲区大小,默认为 4096 |
| executorCount | 执行线程数量,默认为 Runtime.getRuntime().availableProcessors() |
| keepAliveTime | 空闲线程等待新任务的最长时间,默认为 0 |
| threadMaxPoolSize | 最大线程池大小,默认为 200 |
| threadQueueSize | 线程队列大小,默认为 1024 |
| selectorCount | 选择器数量,默认为 1 |
| params | 自定义参数映射 |
配置示例代码
IServerCfg serverCfg = DefaultServerCfg.builder()
.serverName("demoServer")
.serverHost("0.0.0.0")
.port(8281)
.build();