名字
封装的IM启动类:
public class WebIMStarter {
private WsServerStarter wsServerStarter;
private ServerTioConfig serverTioConfig;
public WebIMStarter(WsServerConfig wsServerConfig) throws IOException {
wsServerStarter = new WsServerStarter(wsServerConfig,new WebSocketHandler());
serverTioConfig = wsServerStarter.getServerTioConfig();
}
public WsServerStarter getWsServerStarter() {
return wsServerStarter;
}
public ServerTioConfig getServerTioConfig() {
return serverTioConfig;
}
public void start() throws IOException {
wsServerStarter.start();
}
}
自定义了一个监听,已经绑定到ServerTioConfig中
@Configuration
@EnableConfigurationProperties(WebImProperties.class)
public class WebImConfig {
@Autowired
private WebImProperties properties;
@Bean
public WebIMStarter webIMStarter() throws IOException {
WsServerConfig wsServerConfig = new WsServerConfig(Integer.parseInt(properties.getTioServerPort()),false);
wsServerConfig.setBindIp(properties.getTioServerIp());
WebIMStarter webIMStarter = new WebIMStarter(wsServerConfig);
ServerTioConfig serverTioConfig = webIMStarter.getServerTioConfig();
serverTioConfig.setServerAioListener(new WebImServerAioListener());
serverTioConfig.setHeartbeatTimeout(properties.getTioTimeout());
webIMStarter.start();
return webIMStarter;
}
}
监听类如下:
public class WebImServerAioListener extends WsServerAioListener {
private static final Logger logger = LoggerFactory.getLogger(WebImServerAioListener.class);
@Override
public boolean onHeartbeatTimeout(ChannelContext channelContext, Long interval, int heartbeatTimeoutCount) {
logger.info("心跳超时:{}", channelContext);
//用户统计
WebImClients.removeUserChannelContext(channelContext.userid,channelContext.getId());
WebImClients.setTotalChannelContextNum(Tio.getByGroup(channelContext.getTioConfig(),"tianxia").size());
WebIMUtil.sendOnLineMsg(channelContext);
return super.onHeartbeatTimeout(channelContext, interval, heartbeatTimeoutCount);
}
}
但是有连接心跳超时的时候,没有回调我自定义监听的心跳超时方法。
debugger发现线程调用的是默认的
wsServerAioHandler = new WsServerAioHandler(wsServerConfig, wsMsgHandler);
截图如下:
最新评论 我的评论
t-io为本站提供HTTP、WebSocket、Socket、页面渲染与压缩等服务,nginx为本站提供反向代理服务
© 2017-2021 钛特云 版权所有 | 浙ICP备17032976号 | 浙公网安备 33011802002129号