Spring Boot 在Netty上开发WebSocket和HTTP应用之一 【服务器端HTTP(S)/WebSocket(WSS)实现及配置篇】

看了很多文章,趟过了很多坑,现在总结一下,一个作为自己的备份,另一个也是帮助他人。

项目里面服务器开一个端口为HTTP提供服务,另外一个端口为WebSocket提供服务。

项目采用技术:
Spring Boot , Tomcat8(Spring Boot内嵌),Netty(4.1.19),WebSocket
Redis、MySQL、JPA、JUnit等
另外部署时还使用了阿里的SLB 和 自己配置的Nginx

启动器类:

HTTP应用启动

因为业务比较特殊,需要在客户端连接服务器端的同时在Http header中发送token信息,
而这个在Netty封装的WebSocket服务器端无法在握手的同时正常解析header中的数据
(使用bing.com 搜索到有英文网站上有人提出类似的问题,其解决方案是在修改Netty的
HandlerShaker代码,使用反射,将自己的逻辑加入进去,个人觉得不太优雅,干脆只用
Netty做HTTP的服务器,而使用Spring Boot内嵌的tomcat作为websocket的Server提供者)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个快速开发框架,Netty是一个高性能的网络通信框架,WebSocket是一种基于TCP协议的双向通信协议。将它们结合起来实现IM系统是一种非常好的选择。 以下是实现步骤: 1. 创建Spring Boot项目,添加NettyWebSocket依赖。 2. 创建WebSocket处理器,继承自Netty的SimpleChannelInboundHandler,并实现WebSocketServerProtocolHandler.ServerHandshakeStateEvent事件。在这个处理器中,可以处理连接建立、消息发送和接收等操作。 3. 创建WebSocket服务器,使用Netty的ServerBootstrap和EventLoopGroup创建一个监听端口的服务器。在服务器启动时,将WebSocket处理器添加到ChannelPipeline中。 4. 创建WebSocket客户端,使用NettyBootstrap和EventLoopGroup创建一个连接到服务器的客户端。在客户端连接成功时,发送握手请求,并在握手成功后发送消息。 5. 在Spring Boot项目中创建一个消息处理器,用于处理从WebSocket客户端接收到的消息。可以使用Spring的消息队列来处理这些消息。 6. 在Web界面上添加WebSocket客户端,使用JavaScript编写WebSocket客户端代码,连接到服务器并发送消息。在收到服务器发送的消息时,将其显示在Web界面上。 通过以上步骤,就可以实现一个基于Spring BootNettyWebSocket的IM系统。用户可以在Web界面上发送和接收消息,服务器和客户端之间的通信是双向的。这种实现方式具有高性能、高可靠性和高扩展性,可以应用于各种实时通信场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值