Skip to content

Latest commit

 

History

History
 
 

ahao-spring-boot-websocket-endpoint

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

简介

使用Java提供的@ServerEndpoint注解实现的WebSocket服务端, 以及原生js的客户端.

实现步骤很简单

  1. 注册一个ServerEndpointExporterBean
  2. 在服务请求处理类添加一个@ServerEndpoint("/chat"), 并为回调函数添加@OnXxx注解.

注意

@ServerEndpoint修饰的类, 每次WebSocket请求Open都会创建一个对象, 所以可能会出现@Autowired失效的情况. 解决方案有两种

@Component
@ServerEndpoint("/chat")
public class ChatController {
    private static final Logger logger = LoggerFactory.getLogger(ChatController.class);
    
    // 1. 用 static 修饰, 并添加 setter
    private static ChatService chatService;
    @Autowired
    public void setChatService(ChatService chatService) {
        ChatController.chatService = chatService;
    }

    // 2. 直接使用 ApplicationContext 获取
    public ChatService getChatService() {
        return SpringContextHolder.getBean(ChatService.class);
    }
}