springboot中websocket的使用

客户端
<script>
var websocket = null;
if('websocket' in window){
websocket = new WebSocket('ws://');
}else {
alert('浏览器不支持websocket')
}

websocket.onopen = function (ev) {
console.log('websocket打开');
}

websocket.onclose = function (ev) {
console.log('websocket关闭');
}
    
websocket.onmessage = function (ev) {
console.log('收到websocket新消息' + ev.data);
//处理消息
}

websocket.onerror = function (ev) {
console.log('websocket出错');
}

window.onbeforereunload = function () {
websocket.close();
}

</script>


服务端
1.引入依赖
2.编写配置文件 WebsocketConfig.java
@Bean
public ServerEndpointExporter serverEndpointExporter () {
    return new ServerEndpointExporter();
}


3.编写controller类WebSocket.java
private Session session;
    private static CopyOnWriteArraySet<WebSocket> copyOnWriteArraySet = newCopyOnWriteArraySet<>();
@OnOpen
public void onOpen (Session session) {
    this.session = session;
    copyOnWriteArraySet.add(this);
    log.info("【webSocket消息】 有新的连接,连接总数:{}",copyOnWriteArraySet.size());
}

@OnClose
public void onClose () {
    copyOnWriteArraySet.remove(this);
    log.info("【webSocket消息】 关闭连接,连接总数:{}",copyOnWriteArraySet.size());
}

@OnMessage
public void onMessage (String message) {
    log.info("【webSocket消息】 有新的信息,信息内容:{}",message);
}

public void sendMessage (String message){
    for(WebSocket websocket : copyOnWriteArraySet){
            log.info("【webSocket消息】 发送信息,信息内容:{}",message);
        try {
            websocket.session.getBasicRemote().sendText(message);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

以上为websocket的基础调用,在控制层调用sendMessage方法即可向前台页面推送消息。

但是编写配置文件WebsocketConfig.java 之后使用测试类进行测试方法会报错,暂时不知道原因。















猜你喜欢

转载自blog.csdn.net/qq_38439885/article/details/79789964
今日推荐