SpringCloudAlibaba 应用webSocket,解决连接成功后会立刻断开等问题

这篇具有很好参考价值的文章主要介绍了SpringCloudAlibaba 应用webSocket,解决连接成功后会立刻断开等问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近公司有个大屏,需要做一个实时报警的功能,这就用到了webSocket技术,这个帖子就用来记录学习过程中的遇到的问题,如下是想要达到的效果图

SpringCloudAlibaba 应用webSocket,解决连接成功后会立刻断开等问题

 1.第一步肯定是先导入依赖

        <!-- websocket -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
        </dependency>

这里记录第一个坑点,就是可能有的小伙伴会在启动的时候报错,这个是因为websocket和tomcat有冲突,需要取消tomcat和测试的依赖,因为我用的是ruoyicloudplus 所以取消了common-web 和 test的依赖,项目就能顺利启动了~

2.编写config和方法类

这步都很简单,我是直接用的注解

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中把子模块的路径配置进去!!!!!!下面是我网关和配置的截图

SpringCloudAlibaba 应用webSocket,解决连接成功后会立刻断开等问题SpringCloudAlibaba 应用webSocket,解决连接成功后会立刻断开等问题SpringCloudAlibaba 应用webSocket,解决连接成功后会立刻断开等问题

切记 一定要加!!!

做完这些就可以在业务代码上直接应用了

 我这就大概写个例子

 SpringCloudAlibaba 应用webSocket,解决连接成功后会立刻断开等问题

 接下来让我们测试一下,先添加信息

 SpringCloudAlibaba 应用webSocket,解决连接成功后会立刻断开等问题

 SpringCloudAlibaba 应用webSocket,解决连接成功后会立刻断开等问题

 成功收到,大功告成文章来源地址https://www.toymoban.com/news/detail-502598.html

到了这里,关于SpringCloudAlibaba 应用webSocket,解决连接成功后会立刻断开等问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Navicat数据库连接成功,密码忘记如何解决

    文章转载自:Navicat已经成功连接,密码忘记的解决方法_铁打的阿秀的博客-CSDN博客 解决方法 目录 解决方法 一:通过注册表找到数据库连接的密码,再通过PHP解密 二.通过Navicat导出连接,找到连接密码,再通过PHP进行解密 一:通过注册表找到数据库连接的密码,再通过PHP解

    2024年02月11日
    浏览(46)
  • 解决grpc连接Dial成功状态却变为TransientFailure

     如有帮助,欢迎留下足迹哦! 详情如下 code = Unavailable desc = connection error: desc = \\\"transport: Error while dialing dial tcp 192.168.31.33:9001:  connectex: No connection could be made because the target machine actively refused it.\\\" 此时连接状态为  TransientFailure 目录 背景 现象汇总 分析与解决 总结与附录 GRP

    2024年02月03日
    浏览(42)
  • 电脑休眠唤醒后会出现屏幕闪烁问题怎么彻底解决?

    电脑休眠唤醒后会出现屏幕闪烁问题怎么彻底解决?有的用户在电脑待机休眠之后,重新去唤醒电脑使用,这个时候电脑屏幕就会出现验证的屏幕闪烁,导致无法进行正常的使用。这个情况是电脑系统不兼容导致的。如果想要彻底解决问题,可以安装兼容性更好的系统来使用

    2024年02月09日
    浏览(54)
  • 成功解决Android设备adb连接后显示device unauthorized

    在电脑通过USB连接新的Android设备,想要通过adb来进行一些操作时,却发现命令提示符上在输入下面命令后显示设备未授权的信息也就是\\\"unauthorized\\\" 有人提出的解决方案是打开Android设备的 开发者选项 中的 USB调试 ,但笔者在之前已经打开了,由此可知问题并不与此相关。 通过

    2024年02月13日
    浏览(50)
  • 解决‘selenium打开浏览器驱动后会自动关闭’的问题

    在学习的时候,遇到使用selenium打开浏览器驱动时,没有写关闭代码,浏览器也会自动关闭,导致在学习不是很方便,代码如下 关于这个情况,我找到了两个解决办法 第一:是因为selenium的版本过高,我原来使用的是4.3版本,把版本降到到3.0即可 卸载selenium:pip uninstall sele

    2024年04月17日
    浏览(58)
  • 【解决】websocket ws连不上或无法连接

    大致报错内容如图: WebSocket 连接失败的原因有很多,主要有以下几点: 服务器端没有正确配置 WebSocket,导致客户端无法连接。 网络问题,如网络不稳定,网络延迟等,导致客户端无法连接。 客户端代码有问题,导致无法正确连接服务器。 服务器端的防火墙设置不当,导致

    2024年02月12日
    浏览(51)
  • Kafka-Eagle安装及连接成功web端登陆不了问题解决

    kafka自身并没有集成监控管理系统,因此对kafka的监控管理比较不便,好在有大量的第三方监控管理系统来使用,常见的有: Kafka Eagle KafkaOffsetMonitor Kafka Manager(雅虎开源的Kafka集群管理器) Kafka Web Console 还有JMX接口自开发监控管理系统 以下是3.1.0版TV页面 Kafka-Eagle安装 安装包

    2024年02月08日
    浏览(48)
  • 【vue3】前端应用中使用WebSocket与服务器进行通信并管理连接状态。

    1、写一个hook函数 url 是WebSocket的服务器地址,其中 Math.random() 用于生成一个随机数,以避免缓存问题。 onConnected 、 onDisconnected 和 onError 是连接建立、断开和出错时的回调函数,你可以根据实际需求来定义它们。 onMessageDefault 是当接收到消息时的默认处理函数,在这里将接收

    2024年02月09日
    浏览(62)
  • “已成功与服务器建立连接,但是在登录过程中发生错误“的解决方法

    对于上述问题,我也曾被折磨得不轻。 网上找了很多方法,很多就是每个屁用! 别轻易就重新注册一个新的,否则后面可能还需要花时间去把它删了。 首先,我们会看到连接成功但是登陆不上的报错图。  电脑不同,可能也会有所不同。但大致内容就是上述那样。 方法一:

    2024年02月06日
    浏览(131)
  • websocket服务端,运行后始终无法连接的解决方案

    javax.websocket.DeploymentException: The HTTP response from the server [404] did not permit the HTTP 解决办法:少两个文件: 加上这两个文件,就可以了

    2024年02月15日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包