记录一次springboot+netty+websocket报错的问题

这篇具有很好参考价值的文章主要介绍了记录一次springboot+netty+websocket报错的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

报错内容
io.netty.handler.codec.htttp.websocketx.textwebsocketframe can not be cast to io.netty.handler.codec.http.FullHttpRequest;
核心问题
springboot项目设定了项目访问前缀,/project/
而我只给websocket设定了单独的访问路径
pipeline.addLast(new WebSocketServerProtocolHandler(“/msg”));
前台初始化websocket的路径是
this.socket=new WebSocket(“ws://localhost:9999/project/msg”);

websocket里面的访问路径应该将项目统一的访问前缀加进去。
pipeline.addLast(new WebSocketServerProtocolHandler(“/project//msg”));

报错流程:
首先,netty服务器是能正常启动起来的,然后,第一次Http请求升级为websocket是成功的,然后在后面触发 send方法的时候,出现了上面的报错。
其实在最开始搭建服务器的时候,报错内容不是这个,具体是什么已经记不清了,这个问题困扰了我半个月,逐步前进,才到了上面的报错。
textwebsocketframe 是用于websocket握手成功后,用于传递消息的消息体,FullHttpRequest是在初次握手时第一次为了将http请求升级为websocket时用的消息体。问题的表现是,握手已经成功了,且用textwebsocketframe 传递消息,但是解析消息却走了 为握手的http方法FullHttpRequest
报错类名称
websocketserverprotocolHandshakehandler
里面的channelread方法,看源码可以了解,在开始即刻进行了强制类型转换
FullHttpRequest req=(FullHttpRequest)msg;
在这报的错。
这里的channelread无论在通信升级为websocket前还是后,都是会触发的,根据请求判断是否是websocket类型的请求。如果是websocket类型,会将解析http数据的解析器失效。然后将解析websocket的解析器加进来。

初始化的时候,我自己重写了判断是否是websocket的方法,然后直接握手成功了,但是在流程中,判断结果还是非websocket数据。
判断方法是根据访问的uri来进行判断,如此,项目前缀我没有加入到设定的uri中,结果是
判断请求类型为非websocket类型了,导致执行了按非websocket的流程。文章来源地址https://www.toymoban.com/news/detail-619064.html

到了这里,关于记录一次springboot+netty+websocket报错的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 解决Springboot项目打成jar包后获取resources目录下的文件报错的问题

    前几天在项目读取resources目录下的文件时碰到一个小坑,明明在本地是可以正常运行的,但是一发到测试环境就报错了,说找不到文件,报错信息是:class path resource [xxxx] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:xxxx.jar!/BOOT-INF/classes!xxxx。 看了

    2024年02月11日
    浏览(56)
  • SpringBoot+Netty+Websocket实现消息推送

    这样一个需求:把设备异常的状态每10秒推送到页面并且以弹窗弹出来,这个时候用Websocket最为合适,今天主要是后端代码展示。 添加依赖 定义netty端口号 netty服务器 Netty配置 管理全局Channel以及用户对应的channel(推送消息) 管道配置 自定义CustomChannelHandler 推送消息接口及

    2024年02月04日
    浏览(49)
  • 记录开发环境docker上的一次springboot无法读取更新的配置文件的问题

    背景:一般开发环境的管理不是很严格,当对代码进行一些组件的添加时,往往需要修改spring的配置文件,有的时候为了保险起见,回预先备份原本的配置文件,我采取在./config中创建了一个名为bak-日期的目录,将原本的配置文件mv到该目录下,将新的配置文件移到config目录

    2024年02月11日
    浏览(46)
  • Visual Studio 2022 中使用scanf报错的解决方法(一次性解决)

    🎬 鸽芷咕 :个人主页  🔥 个人专栏 :《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活!    🌈 hello! 各位宝子们大家好啊,前面一章给大家介绍了Visual Studio 2022 的安装和使用!    ⛳️ 但是 Visual Studio 2022 并不是按照标准的C语言标准,所以使

    2024年02月16日
    浏览(83)
  • 记录一次在centos 8 下docker 安装reids 一直报错无法启动问题

    目录 1.首先翻看了网上大部分启动失败原因总结如下  可以使用docker logs reids查看启动失败原因 1.1启动挂载目录失败  通常是没有创建目录 1.2启动闪退  通常为配置文件 daemonize yes 没有改成 no 导致 1.3启动之后直接报错 Fatal: Can\\\'t initialize Background Jobs 然后无限重启  请不要

    2024年01月20日
    浏览(47)
  • SpringBoot整合Netty+Websocket实现消息推送

           Netty是一个高性能、异步事件驱动的网络应用框架,用于快速开发可维护的高性能协议服务器和客户端。以下是Netty的主要优势: 高性能 :Netty基于NIO(非阻塞IO)模型,采用事件驱动的设计,具有高性能的特点。它通过零拷贝技术、内存池化技术等手段,进一步提高

    2024年01月20日
    浏览(45)
  • Springboot中使用netty 实现 WebSocket 服务

    依赖 创建启动类 创建WebSocket 服务 WsServerInitialzer 初始化 创建信息ChatHandler 处理类

    2024年02月14日
    浏览(38)
  • Springboot+Netty+WebSocket搭建简单的消息通知

    Springboot+Netty+WebSocket搭建简单的消息通知 一、快速开始 1、添加依赖 2、添加配置 3、添加启动类 二、添加WebSocket部分代码 1、WebSocketServer 2、WebSocketConfig 3、DemoController 6、添加templates/index.html 三、添加Netty部分 1、NettyServer 2、WSChannelHandlerPool 3、WSWebSocketHandler 四、启动服务 ht

    2024年02月11日
    浏览(43)
  • 基于Springboot用Netty实现WebSocket及用户身份校验

    说在前头,文本主要参考: SpringBoot+WebSocket+Netty实现消息推送 Netty-11-channelHandler的生命周期 springboot整合netty指北 首先 需要了解下channel建立的生命周期 ChannelHandler的顺序如下: 注意本次实现的重点是:在建立websocket时从请求标头header或者第一次消息对话时获取用户信息(如jw

    2024年02月04日
    浏览(43)
  • SpringBoot+Netty+Vue+Websocket实现在线推送/聊天系统

    ok,那么今天的话也是带来这个非常常用的一个技术,那就是咱们完成nutty的一个应用,今天的话,我会介绍地很详细,这样的话,拿到这个博文的代码就基本上可以按照自己的想法去构建自己的一个在线应用了。比如聊天,在线消息推送之类的。其实一开始我原来的想法做在

    2024年02月03日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包