WebSocketInterceptor.java 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package com.zj.websocket;
  2. import java.util.Map;
  3. import org.springframework.http.server.ServerHttpRequest;
  4. import org.springframework.http.server.ServerHttpResponse;
  5. import org.springframework.http.server.ServletServerHttpRequest;
  6. import org.springframework.web.socket.WebSocketHandler;
  7. import org.springframework.web.socket.server.HandshakeInterceptor;
  8. import cn.hutool.core.util.StrUtil;
  9. import lombok.extern.slf4j.Slf4j;
  10. /**
  11. * 握手拦截器,握手成功才能连接
  12. *
  13. * @author jzhang
  14. *
  15. */
  16. @Slf4j
  17. public class WebSocketInterceptor implements HandshakeInterceptor {
  18. @Override
  19. public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler handler,
  20. Map<String, Object> map) throws Exception {
  21. // 处理握手
  22. if (request instanceof ServletServerHttpRequest) {
  23. ServletServerHttpRequest serverHttpRequest = (ServletServerHttpRequest) request;
  24. String url = serverHttpRequest.getServletRequest().getParameter("url");
  25. String id = serverHttpRequest.getServletRequest().getParameter("id");
  26. if (StrUtil.isNotBlank(url) && StrUtil.isNotBlank(id)) {
  27. map.put("url", url);
  28. map.put("id", id);
  29. log.info("握手成功, id: {}, url:{}", id, url);
  30. return true;
  31. }
  32. }
  33. return false;
  34. }
  35. @Override
  36. public void afterHandshake(ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse,
  37. WebSocketHandler webSocketHandler, Exception e) {
  38. }
  39. }