最近公司有个大屏,需要做一个实时报警的功能,这就用到了webSocket技术,这个帖子就用来记录学习过程中的遇到的问题,如下是想要达到的效果图
<!-- websocket -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
这里记录第一个坑点,就是可能有的小伙伴会在启动的时候报错,这个是因为websocket和tomcat有冲突,需要取消tomcat和测试的依赖,因为我用的是ruoyicloudplus 所以取消了common–web 和 test的依赖,项目就能顺利启动了~
import lombok.extern.slf4j.Slf4j;
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.util.concurrent.CopyOnWriteArraySet;
/**
* @author nxy
*/
@Component
@ServerEndpoint(value = "/websocket",subprotocols = {"protocol"})
@Slf4j
public class WebSocket {
private Session session;
private static CopyOnWriteArraySet<WebSocket> webSocketSet = new CopyOnWriteArraySet<>();
@OnOpen
public void onOpen(Session session){
this.session=session;
webSocketSet.add(this);
log.info("webSocket 消息有新推送,连接总数{}",webSocketSet.size());
}
@OnClose
public void onClose( ){
webSocketSet.remove(this);
log.info("webSocket 有连接断开,连接总数{}",webSocketSet.size());
}
@OnMessage
public void onMessage(String message ){
log.info("收到客户端发来的消息{}",message);
}
/**
* 广播发送消息
* @param message 信息内容
*/
public void sendMessage(String message){
for(WebSocket webSocket:webSocketSet){
log.info("广播消息{}",message);
try {
webSocket.session.getBasicRemote().sendText(message);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
/**
* websocket 配置
*
* @author ruoyi
*/
@Configuration
public class WebSocketConfig
{
@Bean
public ServerEndpointExporter serverEndpointExporter()
{
return new ServerEndpointExporter();
}
}
大概写完这些就可以愉快的应用websocket的 大概有的人可能会遇到我的问题,就是可以连接成功,但是会立刻断开,这个问题也困惑了我两天,终于在摸鱼中无意间发现了问题。就是我的这个框架是有鉴权的,但是大屏是不会登录的,我当时只是在gateway白名单上加了头路径,还需要在SecurityConfiguration中把子模块的路径配置进去!!!!!!下面是我网关和配置的截图
切记 一定要加!!!
我这就大概写个例子
成功收到,大功告成
原文地址:https://blog.csdn.net/xiao_nxy/article/details/128870800
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_12039.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。