【websocket】springboot使用websocket实现消息推送

首先我们引用Spring-boot所带的websocket依赖:


     org.springframework.boot
     spring-boot-starter-websocket

然后编写前端代码和后台处理后台触发的事件:

后台进行websocket配置:

@Component
public class WebSocketConfig {
    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }
}

然后编写websocket类,接收ws协议的请求:ws://localhost/websocket,并通过对应方法进行连接,同时编写sendMessage()方法,向前台发送消息,当后台需要时就调用该方法

@Component
@ServerEndpoint("/websocket")
@Slf4j
public class WebSocket {
    private Session session;

    private static CopyOnWriteArraySet webSockets = new CopyOnWriteArraySet<>();

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


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

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

    public void sendMessage(String message){
        for (WebSocket webSocket: webSockets) {
            log.info("【websocket消息】广播消息, message={}", message);
            try {
                webSocket.session.getBasicRemote().sendText(message);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

当我们需要提交订单想向前台发送消息时,我们可以调用sendMessage()方法

@Autowired
private WebSocket webSocket;
//发送websocket消息
webSocket.sendMessage("您有新的订单啦!!!");

前台效果如下:

【websocket】springboot使用websocket实现消息推送_第1张图片

后台消息

 

 

 

 

 

你可能感兴趣的:(------,javaweb,①java学习)