栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Springboot整合Websocket

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Springboot整合Websocket

后端使用websocket主动向前端发送消息

依赖
    
        org.springframework.boot
        spring-boot-starter-websocket
    
    
        org.springframework.boot
        spring-boot-starter-thymeleaf
    
config
@Configuration
public class WebSocketConfig {
    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }
}
util
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.concurrent.CopyOnWriteArraySet;

@ServerEndpoint("/websocket")
@Component
public class WebSocket {
    // 与某个客户端的连接会话,需要通过他来给客户端发送数据
    private Session session;

    //concurrent包的线程安全set,用来存放每个客户端对应的websocket对象
    private static CopyOnWriteArraySet webSockets = new CopyOnWriteArraySet<>();

    private static final Logger LOGGER = LoggerFactory.getLogger(WebSocket.class);

    
    @OnOpen
    public void onOpen(Session session) {
        this.session = session;
        webSockets.add(this);
        LOGGER.info("【websocket消息】 有新的连接,总数{}", webSockets.size());
    }

    
    @OnClose
    public void onClose() {
        this.session = session;
        webSockets.remove(this);
        LOGGER.info("【websocket消息】 连接断开,总数{}", webSockets.size());
    }

    
    @OnMessage
    public void onMessage(String message) {
        LOGGER.info("【websocket消息】 收到客户端发来的消息:{}", message);
    }

    public void sendMessage(String message) {
        LOGGER.info("【websocket消息】 发送消息:{}", message);
        for (WebSocket webSocket : webSockets) {
            try {
                webSocket.session.getBasicRemote().sendText(message);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
效果

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/995693.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号