服務端初始化參數(shù):
#------------------------------------- # 服務模塊--服務端初始化參數(shù) #------------------------------------- # 服務端配置列表,多個服務端名稱間用'|'分隔,默認為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 # 監(jiān)聽端口號, 默認為8281 ymp.configs.serv.server.default.port=8281 # 編解碼字符集, 默認為UTF-8 ymp.configs.serv.server.default.charset=UTF-8 # 緩沖區(qū)大小, 默認為4096 ymp.configs.serv.server.default.buffer_size=4096 # NIO選擇器數(shù)量, 默認為1 ymp.configs.serv.server.default.selector_count=1 # 執(zhí)行線程池大小, 默認為10 ymp.configs.serv.server.default.executor_count=10 # 自定義參數(shù), 可選 ymp.configs.serv.server.default.params.xxx=xxx
通過在監(jiān)聽器實現(xiàn)類聲明@Server
注解來表示一個服務端,該注解有如下參數(shù):
參數(shù) | 說明 |
---|---|
name | 設置服務的名稱,Serv框架將會根據(jù)該參數(shù)指定的名稱加載對應的服務端參數(shù)配置,默認為default; |
codec | 設置編解碼器,默認為NioStringCodec; |
implClass | 服務端實現(xiàn)類,默認為NioServer; |
基于TCP協(xié)議的服務端,需要繼承NioServerListener監(jiān)聽器類,支持監(jiān)聽如下事件:
事件 | 說明 |
---|---|
onSessionAccepted | 客戶端成功接入服務端后觸發(fā)該事件; |
onBeforeSessionClosed | 客戶端會話被關閉之前觸發(fā)該事件; |
onAfterSessionClosed | 客戶端會話被關閉之后觸發(fā)該事件; |
onMessageReceived | 收到客戶端發(fā)送的消息時觸發(fā)該事件; |
onExceptionCaught | 出現(xiàn)異常時觸發(fā)該事件; |
基于UDP協(xié)議的服務端,需要繼承NioUdpListener監(jiān)聽器類,支持監(jiān)聽如下事件:
事件 | 說明 |
---|---|
onSessionReady | 客戶端與服務端連接已建立并準備就緒時觸發(fā)該事件; |
onMessageReceived | 收到客戶端發(fā)送的消息時觸發(fā)該事件; |
onExceptionCaught | 出現(xiàn)異常時觸發(fā)該事件; |
// 采用默認配置的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); // 向客戶端發(fā)送消息 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服務端,其中implClass參數(shù)必須指定為NioUpdServer.class @Server(implClass = NioUdpServer.class, codec = TextLineCodec.class) public class UdpServer extends NioUdpListener { public Object onSessionReady() throws IOException { // 此接口方法的返回值將作為消息發(fā)送至客戶端 return null; } public Object onMessageReceived(InetSocketAddress sourceAddr, Object message) throws IOException { // 輸出接收到的消息 System.out.println("Message received: " + message); // 此接口方法的返回值將作為消息發(fā)送至客戶端 return message; } public void onExceptionCaught(InetSocketAddress sourceAddr, Throwable e) throws IOException { System.out.println(sourceAddr + "--->" + e); } }
更多建議: