环境
- SpringBoot 2.1.3
- JDK1.8
- Eclipse
- Maven3.5.4
- Windows10
Demo搭建
Demo地址访问:https://gitee.com/ruyulin/websocket
1.项目目录结构
2.项目依赖pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
</parent>
<dependencies>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- 引入web组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
</dependencies>
3.WebSocketConfig
package cn.com.witsystem.websocket.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
@Configuration
public class WebSocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}
4.MyWebSocket
package cn.com.witsystem.websocket.websocket;
import java.io.IOException;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import org.springframework.stereotype.Component;
import lombok.extern.slf4j.Slf4j;
@ServerEndpoint(value = "/websocket")
@Component
@Slf4j
public class MyWebSocket {
/**
*
* @Title: onOpen
* @Description: 连接建立成功调用的方法
* @param: @param session
* @return: void
* @throws
*/
@OnOpen
public void onOpen(Session session) {
log.info("连接建立成功调用的方法");
}
/**
*
* @Title: onClose
* @Description: 连接关闭调用的方法
* @param:
* @return: void
* @throws
*/
@OnClose
public void onClose() {
log.info("连接关闭调用的方法");
}
/**
*
* @Title: onMessage
* @Description: 收到客户端消息后调用的方法
* @param: @param message
* @param: @param session
* @param: @throws IOException
* @return: void
* @throws
*/
@OnMessage
public void onMessage(String message, Session session) throws IOException {
log.info("收到客户端消息后调用的方法 ");
session.getBasicRemote().sendText(message);
log.info(message);
}
/**
*
* @Title: onError
* @Description: 发生错误时调用
* @param: @param session
* @param: @param error
* @return: void
* @throws
*/
public void onError(Session session, Throwable error) {
log.info("发生错误");
error.printStackTrace();
}
}
5.WebSocketApplication
package cn.com.witsystem.websocket;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class WebSocketApplication {
public static void main(String[] args) throws Exception {
SpringApplication.run(WebSocketApplication.class, args);
}
}
6.启动测试
访问 ws://localhost:8080/websocket 就可以连接了。
建议使用在线websocket测试工具,很方便。
http://www.bejson.com/httputil/websocket/