概要
- 2018年第一天上班
- WebSocket 简介
- spring-boot-websocket的使用
前言: 2018年上班第一天,没什么事,就将前些天写的一个关于智能面试机器人项目中使用到的websoket总结如下:
WebSocket 简介
WebSocket是HTML5一种新的协议。它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯,它建立在TCP之上,同HTTP一样通过TCP来传输数据,但是它和HTTP最大不同是:
- WebSocket 是一种双向通信协议,在建立连接后,WebSocket服务器和Browser/Client Agent都能主动的向对方发送或接收数据,就像Socket一样;
- WebSocket 需要类似TCP的客户端和服务器端通过握手连接,连接成功后才能相互通信。
spring-boot-websocket的使用
1.maven依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>
3.配置文件
@Componentpublic class MyEndpointConfigure extends ServerEndpointConfig.Configurator implements ApplicationContextAware {private static BeanFactory context;@Overridepublic <T> T getEndpointInstance(Class<T> clazz) {return context.getBean(clazz);}@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {MyEndpointConfigure.context = applicationContext;}}
@Configurationpublic class WebSocketConfig {@Beanpublic ServerEndpointExporter serverEndpointExporter() {return new ServerEndpointExporter();}}
3.核心websocket
特别注意: 不能使用默认的ServerEndpointConfig.Configurator.class,不然会导致服务无法注入
@ServerEndpoint(value = "/websocket", configurator = MyEndpointConfigure.class)@Componentpublic class WebSocket {/*** 成功建立连接调用的方法.*/@OnOpenpublic void onOpen(Session session) {}/*** 连接关闭调用的方法.*/@OnClosepublic void onClose(Session session) {}/*** 收到客户端消息后调用的方法.*/@OnMessagepublic void onMessage(String message, Session session) {}/*** 发生错误时调用.*/@OnErrorpublic void onError(Session session, Throwable error) {}}
