【可靠能用】springboot集成netty,在不同端口实现tcp、websocket服务器

news/2024/12/27 21:29:32/

概述

Netty可以同时创建TCP服务器和WebSocket服务器。
Netty是一个高性能、异步事件驱动的网络应用程序框架,它提供了对TCP、UDP和多种协议的支持,包括WebSocket。这意味着你可以在同一个Netty应用程序中同时实现TCP和WebSocket通信。

实现方式

  1. 同一端口。通过配置不同的ChannelHandler来处理TCP和WebSocket的不同请求。例如,你可以设置一个ChannelInitializer来初始化新的连接,并根据请求的类型(TCP或WebSocket)将其路由到相应的处理器。
  2. 不同端口。在实际应用中,可以通过配置不同的ChannelHandler来处理TCP和WebSocket的不同请求。

对于方式一,我们给出一个简单示例。本文不再详细概述完整实现。

import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.*;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.handler.codec.http.HttpObjectAggregator;
import io.netty.handler.codec.http.HttpServerCodec;
import io.netty.handler.codec.http.websocketx.WebSocketServerProtocolHandler;
import io.netty.handler.stream.ChunkedWriteHandler;public class MultiProtocolServer {private final int port;public MultiProtocolServer(int port) {this.port = port;}public void start() throws InterruptedException {EventLoopGroup bossGroup = new NioEventLoopGroup(1);EventLoopGroup workerGroup = new NioEventLoopGroup();try {ServerBootstrap b = new ServerBootstrap();b.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class).childHandler(new ChannelInitializer<SocketChannel>() {@Overrideprotected void initChannel(SocketChannel ch) throws Exception {ChannelPipeline pipeline = ch.pipeline();// 对于WebSocket连接,我们需要添加以下处理器pipeline.addLast(new HttpServerCodec());pipeline.addLast(new</

http://www.ppmy.cn/news/1558611.html

相关文章

【LeetCode 面试经典150题】详细题解之哈希表篇

【LeetCode 面试经典150题】详细题解之哈希表篇 1 哈希表的基础1.1 基础概念及实现1.2.1 哈希表的工作原理1.2.2 705.设计哈希集合1.2.3 706.设计哈希映射 1.2 HashMap相关1.2.1 基本操作1.2.2 遍历 1.3 Hashtable1.4 LinkedHashMap1.5 HashSet**1.5.1基本特性**1.5.2 基本方法…

鸿蒙Next之包体积极限优化

鸿蒙应用包大小优化全解析 在鸿蒙应用开发中&#xff0c;减小应用包大小对于提升应用下载和安装体验起着关键作用。通过压缩、精简或复用应用中的代码与资源&#xff0c;能有效降低包体积&#xff0c;减少空间占用并加快下载与安装速度。下面详细介绍一下鸿蒙应用包大小优化的…

2020数字中国创新大赛-虎符网络安全赛道丨Web Writeup

本文是i春秋论坛作家「OPLV1H」表哥参加2020数字中国创新大赛-虎符网络安全赛道线上初赛的赛后总结&#xff0c;关于Web的Writeup记录&#xff0c;感兴趣的小伙伴快来学习吧。 1、hash_file — 是使用给定文件的内容生成哈希值&#xff0c;和文件名称无关。 2、jwt令牌结构和j…

Idea 将多个module显示在同一个project

Idea 将多个maven项目显示在同一个project下 1、选择菜单 File-》New -》Module from Existing Sources -> 2、在弹出的界面选中对应的Module的pom.xml,然后点击OK按钮就行了 (弹出框上面也提示了Eclipse 项目选中.project文件&#xff1b;Maven 项目选中pom.xml; ) 最终显…

数据结构经典算法总复习(下卷)

第五章:树和二叉树 先序遍历二叉树的非递归算法。 void PreOrderTraverse(BiTree T, void (*Visit)(TElemType)) {//表示用于查找的函数的指针Stack S; BiTree p T;InitStack(S);//S模拟工作栈while (p || !StackEmpty(S)) {//S为空且下一个结点为空&#xff0c;意味着结束遍…

农家乐系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️&#xff1a;架构: B/S、MVC 2⃣️&#xff1a;系统环境&#xff1a;Windowsh/Mac 3⃣️&#xff1a;开发环境&#xff1a;IDEA、JDK1.8、Maven、Mysql5.7 4⃣️&#xff1a;技术栈&#xff1a;Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库可…

透视网络世界:计算机网络习题的深度解析与总结【前3章】

第一章 1-14 计算机网络有哪些常用的性能指标&#xff1f; 答&#xff1a;速率&#xff0c;带宽&#xff0c;吞吐量&#xff0c;时延&#xff0c;时延带宽积&#xff0c;往返时间RTT&#xff0c;利用率 1-17收发两端之间的传输距离为1000 km,信号在媒体上的传播速率为2108m/…

YOLOv11融合[NeurIPS2023]GoldYOLO中的GD模块

YOLOv11v10v8使用教程&#xff1a; YOLOv11入门到入土使用教程 YOLOv11改进汇总贴&#xff1a;YOLOv11及自研模型更新汇总 《Gold-YOLO: Efficient Object Detector via Gather-and-Distribute Mechanism》 一、 模块介绍 论文链接&#xff1a;https://arxiv.org/abs/2309.1…