前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WebSocket快速体验 - Spring Boot & JavaScript

WebSocket快速体验 - Spring Boot & JavaScript

作者头像
十毛
发布2023-10-16 16:35:08
1810
发布2023-10-16 16:35:08
举报

公司最近的项目需要用到WebSocket实现消息的适时推送,比如预警消息等,本文使用Spring Boot和JavaScript实现了快速demo

Websocket服务端 - Spring Boot

  • 引入依赖: pom.xml
代码语言:javascript
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
  • Websocket配置
代码语言:javascript
复制
@EnableWebSocket
@Configuration
public class WebSocketConfig {

    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }
}
  • Websocket消息处理 监听事件open、message、close、error
代码语言:javascript
复制
@Slf4j
@Component
@ServerEndpoint(value = "/websocket")
@EnableScheduling
public class WebsocketHandler {
    @OnOpen
    public void onOpen(Session session) {
        System.out.println("WebSocket connection opened: " + session.getId());
        sessionSet.add(session);
    }

    @OnMessage
    public void onMessage(String message, Session session) throws IOException {
        System.out.println("Received message from client: " + message);
        session.getBasicRemote().sendText("Hello, WebSocket client!");
    }

    @OnClose
    public void onClose(Session session, CloseReason reason) {
        System.out.println("WebSocket connection closed: " + session.getId() + ", Reason: " + reason.getReasonPhrase());
        sessionSet.remove(session);
    }

    @OnError
    public void onError(Session session, Throwable error) {
        System.err.println("Error occurred on WebSocket connection: " + session.getId());
        error.printStackTrace();
    }
}

WebSocket客户端 - JavaScript

代码语言:javascript
复制
//创建WebSocket
var socket = new WebSocket("ws://localhost:8080/websocket");

//监听消息
socket.onmessage = function(event) {
    if (typeof event.data === 'string') {
        // 接收到文本消息的处理逻辑
        console.log("Received text message from server: " + event.data);
    } else if (event.data instanceof Blob) {
        // 接收到二进制数据的处理逻辑
        var reader = new FileReader();
        reader.onload = function() {
            var binaryData = reader.result;
            console.log("Received binary data from server: " + binaryData);
        };
        reader.readAsArrayBuffer(event.data);
    } else {
        console.log("Received message from server: " + event.data);
    }
};

//发送消息给服务器
socket.send("hello world");

参考

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-06-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Websocket服务端 - Spring Boot
  • WebSocket客户端 - JavaScript
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档