服务端(Server)示例
2018-12-24 22:33 更新
服务端初始化参数:
#------------------------------------- # 服务模块--服务端初始化参数 #------------------------------------- # 服务端配置列表,多个服务端名称间用'|'分隔,默认为default ymp.configs.serv.server.name_list=default # 服务名称, 默认为default ymp.configs.serv.server.default.name=default # 绑定IP地址, 默认为0.0.0.0 ymp.configs.serv.server.default.host=0.0.0.0 # 监听端口号, 默认为8281 ymp.configs.serv.server.default.port=8281 # 编解码字符集, 默认为UTF-8 ymp.configs.serv.server.default.charset=UTF-8 # 缓冲区大小, 默认为4096 ymp.configs.serv.server.default.buffer_size=4096 # NIO选择器数量, 默认为1 ymp.configs.serv.server.default.selector_count=1 # 执行线程池大小, 默认为10 ymp.configs.serv.server.default.executor_count=10 # 自定义参数, 可选 ymp.configs.serv.server.default.params.xxx=xxx
通过在监听器实现类声明@Server
注解来表示一个服务端,该注解有如下参数:
参数 | 说明 |
---|---|
name | 设置服务的名称,Serv框架将会根据该参数指定的名称加载对应的服务端参数配置,默认为default; |
codec | 设置编解码器,默认为NioStringCodec; |
implClass | 服务端实现类,默认为NioServer; |
基于TCP协议的服务端,需要继承NioServerListener监听器类,支持监听如下事件:
事件 | 说明 |
---|---|
onSessionAccepted | 客户端成功接入服务端后触发该事件; |
onBeforeSessionClosed | 客户端会话被关闭之前触发该事件; |
onAfterSessionClosed | 客户端会话被关闭之后触发该事件; |
onMessageReceived | 收到客户端发送的消息时触发该事件; |
onExceptionCaught | 出现异常时触发该事件; |
基于UDP协议的服务端,需要继承NioUdpListener监听器类,支持监听如下事件:
事件 | 说明 |
---|---|
onSessionReady | 客户端与服务端连接已建立并准备就绪时触发该事件; |
onMessageReceived | 收到客户端发送的消息时触发该事件; |
onExceptionCaught | 出现异常时触发该事件; |
示例代码
TCP服务端
// 采用默认配置的TCP服务端 @Server public class TcpServer extends NioServerListener { @Override public void onSessionAccepted(INioSession session) throws IOException { super.onSessionAccepted(session); } @Override public void onMessageReceived(Object message, INioSession session) throws IOException { super.onMessageReceived(message, session); // 输出接收到的消息 System.out.println("Message received: " + message); // 向客户端发送消息 session.send("Hi, guys!"); } @Override public void onAfterSessionClosed(INioSession session) throws IOException { super.onAfterSessionClosed(session); } @Override public void onBeforeSessionClosed(INioSession session) throws IOException { super.onBeforeSessionClosed(session); } }
UDP服务端
// 采用默认配置的UDP服务端,其中implClass参数必须指定为NioUpdServer.class @Server(implClass = NioUdpServer.class, codec = TextLineCodec.class) public class UdpServer extends NioUdpListener { public Object onSessionReady() throws IOException { // 此接口方法的返回值将作为消息发送至客户端 return null; } public Object onMessageReceived(InetSocketAddress sourceAddr, Object message) throws IOException { // 输出接收到的消息 System.out.println("Message received: " + message); // 此接口方法的返回值将作为消息发送至客户端 return message; } public void onExceptionCaught(InetSocketAddress sourceAddr, Throwable e) throws IOException { System.out.println(sourceAddr + "--->" + e); } }
以上内容是否对您有帮助:
← 服务概述
更多建议: