12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- package com.example.course.websocket.netty;
- import com.example.course.utils.StringTools;
- import io.netty.channel.Channel;
- import io.netty.channel.ChannelHandlerContext;
- import io.netty.channel.SimpleChannelInboundHandler;
- import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
- import io.netty.handler.codec.http.websocketx.WebSocketServerProtocolHandler;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.stereotype.Component;
- @Component
- public class HandlerWebSocket extends SimpleChannelInboundHandler<TextWebSocketFrame> {
- private static final Logger logger = LoggerFactory.getLogger(HandlerHeartBeat.class);
- /**
- * 通道就绪后 调用,一般用来做初始化
- * @param ctx
- * @throws Exception
- */
- @Override
- public void channelActive(ChannelHandlerContext ctx) throws Exception {
- logger.info("有新的连接加入....");
- }
- @Override
- public void channelInactive(ChannelHandlerContext ctx) throws Exception {
- logger.info("有连接断开....");
- }
- @Override
- protected void channelRead0(ChannelHandlerContext ctx, TextWebSocketFrame msg) throws Exception {
- Channel channel = ctx.channel();
- logger.info("收到消息:{}",msg.text());
- }
- @Override
- public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
- if (evt instanceof WebSocketServerProtocolHandler.HandshakeComplete){
- WebSocketServerProtocolHandler.HandshakeComplete complete = (WebSocketServerProtocolHandler.HandshakeComplete) evt;
- String url = complete.requestUri();
- String token = getToken(url);
- if (token == null){
- ctx.channel().close();
- return;
- }
- logger.info("url:{}",url);
- }
- super.userEventTriggered(ctx, evt);
- }
- private String getToken(String url){
- // 判断
- if (StringTools.isEmpty(url) || url.indexOf("?")==-1){
- return null;
- }
- String[] queryParams = url.split("\\?");
- if (queryParams.length!=2){
- return null;
- }
- String[] params = queryParams[1].split("=");
- if (params.length!=2){
- return null;
- }
- return params[1];
- }
- }
|