SpringBoot + netty-socketio如何实现服务器端消息推送

  介绍

这篇文章主要介绍SpringBoot + netty-socketio如何实现服务器端消息推送,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

首先:因为工作需要,需要对接socket . io框架对接,所以目前只能使用netty-socketio.websocket是不支持对接socket . io框架的。

netty-socketio顾名思义他是一个底层基于网状的# 39;实现的插座。

在SpringBoot项目中的集成,请看下面的代码

maven依赖

& lt; dependency>   ,& lt; groupId> com.corundumstudio.socketio   ,& lt; artifactId> netty-socketio   ,& lt; version> 1.7.11   & lt;/dependency>

,下面就是代码了

首先是配置参数

# socketio配置   socketio:   ,主持人:localhost   ,端口:9099   ,#设置最大每帧处理数据的长度,防止他人利用大数据来攻击服务器   ,maxFramePayloadLength: 1048576   ,#设置http交互最大内容长度   ,maxHttpContentLength: 1048576   ,#插座连接数大小(如只监听一个端口老板线程组为1即可)   ,bossCount: 1   100年,workCount:   ,allowCustomRequests:真的   ,#协议升级超时时间(毫秒),默认10秒.北京握手升级为ws协议超时时间   ,upgradeTimeout: 1000000   ,#平消息超时时间(毫秒),默认60秒,这个时间间隔内没有接收到心跳消息就会发送超时事件   ,pingTimeout: 6000000   ,#平消息间隔(毫秒),默认25秒。客户端向服务器发送一条心跳消息间隔   25000年,pingInterval:

上面的注释写的很清楚。下面是配置代码

import  com.corundumstudio.socketio.Configuration;   import  com.corundumstudio.socketio.SocketConfig;   import  com.corundumstudio.socketio.SocketIOServer;   import  org.springframework.beans.factory.InitializingBean;   import  org.springframework.beans.factory.annotation.Autowired;   import  org.springframework.beans.factory.annotation.Value;   import  org.springframework.stereotype.Component;      import  javax.annotation.Resource;/* *   ,* kcm   ,*/@ component   public  class  PushServer  implements  InitializingBean  {      @ autowired才能   private 才能;EventListenner  eventListenner;      @ value才能(“$ {socketio.port}“)   private 才能;int  serverPort;      @ value才能(“$ {socketio.host}“)   private 才能;String  serverHost;      @ value才能(“$ {socketio.bossCount}“)   private 才能;int  bossCount;      @ value才能(“$ {socketio.workCount}“)   private 才能;int  workCount;      @ value才能(“$ {socketio.allowCustomRequests}“)   private 才能;boolean  allowCustomRequests;      @ value才能(“$ {socketio.upgradeTimeout}“)   private 才能;int  upgradeTimeout;      @ value才能(“$ {socketio.pingTimeout}“)   private 才能;int  pingTimeout;      @ value才能(“$ {socketio.pingInterval}“)   private 才能;int  pingInterval;      @Override才能   public 才能;void  afterPropertiesSet (), throws  Exception  {   ,,,Configuration  config =, new 配置();   ,,,config.setPort (serverPort);   ,,,config.setHostname (serverHost);   ,,,config.setBossThreads (bossCount);   ,,,config.setWorkerThreads (workCount);   ,,,config.setAllowCustomRequests (allowCustomRequests);   ,,,config.setUpgradeTimeout (upgradeTimeout);   ,,,config.setPingTimeout (pingTimeout);   ,,,config.setPingInterval (pingInterval);      ,,,SocketConfig  SocketConfig =, new  SocketConfig ();   ,,,socketConfig.setReuseAddress(真正的);   ,,,socketConfig.setTcpNoDelay(真正的);   ,,,socketConfig.setSoLinger (0);   ,,,config.setSocketConfig (socketConfig);      ,,,SocketIOServer  server =, new  SocketIOServer(配置);   ,,,server.addListeners (eventListenner);   ,,,server.start ();   ,,,System.out.println(“启动正常“);   ,,}   }

在就是监听代码

import  com.corundumstudio.socketio.AckRequest;   import  com.corundumstudio.socketio.SocketIOClient;   import  com.corundumstudio.socketio.annotation.OnConnect;   import  com.corundumstudio.socketio.annotation.OnDisconnect;   import  com.corundumstudio.socketio.annotation.OnEvent;   import  org.apache.commons.lang3.StringUtils;   import  org.bangying.auth.JwtSupport;   import  org.springframework.stereotype.Component;      import  javax.annotation.Resource;   import  java.util.UUID;      @ component   public  class  EventListenner  {   ,@   private 才能;ClientCache  clientCache;      ,@   private 才能;JwtSupport  jwtSupport;      ,/* *   ,,*,客户端连接   ,,*   ,,*,@param 客户端   ,,*/@OnConnect才能   public 才能;void  onConnect (SocketIOClient 客户端),{   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

SpringBoot + netty-socketio如何实现服务器端消息推送