Netty实战(十四)WebSocket协议(二)

2023-10-27

一、初始化 ChannelPipeline

我们之前说过为了将 ChannelHandler 安装到 ChannelPipeline 中,需要扩展了ChannelInitializer,并实现 initChannel()方法。

下面我们演示一下:

import io.netty.channel.Channel;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.group.ChannelGroup;
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;

/**
 * Author: lhd
 * Data: 2023/6/12
 * Annotate: 初始化 ChannelPipeline
 */
public class ChatServerInitializer extends ChannelInitializer<Channel> {
   
    private final ChannelGroup group;
    public ChatServerInitializer(ChannelGroup group) {
   
        this.group = group;
    }
    @Override
    protected void initChannel(Channel ch) throws Exception {
    
        ChannelPipeline pipeline = ch.pipeline();
        //将所有需要的ChannelHandler 添加到 ChannelPipeline 中
        pipeline.addLast(new HttpServerCodec());
        pipeline.addLast(new ChunkedWriteHandler());
        pipeline.addLast(new HttpObjectAggregator(64 * 1024));
        pipeline.addLast(new HttpRequestHandler("/ws"));
        pipeline.addLast(new WebSocketServerProtocolHandler("/ws"));
        pipeline.addLast(new TextWebSocketFrameHandler(group))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Netty实战(十四)WebSocket协议(二) 的相关文章

随机推荐

  • [2020.5.30]gdb常用总结

    前提 使用的是带debug信息的动态库 1 info 1 types 查看该类型符号是否存在 若存在显示该类型符号相关信息 info types SDL WindowData info types ucontext t 2 function
  • CSS中关于字体样式p标签的属性

    CSS中关于P标签中的样式 1 font family 浏览器在显示字体的时候 依次判断是否支持当前的字体 直到最后的字体系列 font family 宋体 仿宋 sans serif 浏览器若不支持宋体 则用仿宋 若不支持仿宋 则在san
  • Kafka3.0.0版本——消费者(消费者组详细消费流程图解及消费者重要参数)

    目录 一 消费者组详细消费流程图解 二 消费者的重要参数 一 消费者组详细消费流程图解 创建一个消费者网络连接客户端 主要用于与kafka集群进行交互 如下图所示 调用sendFetches发送消费请求 如下图所示 1 Fetch min
  • [C++]宏定义字节对齐#PragmaPack/Pop

    Pragma Pack n 指定对齐的字节数 pragma pop pop 恢复对齐状态 默认4字节对齐 目录 什么是对齐 对齐规则 功能 应用 什么是对齐 现代计算机中内存空间都是按照byte划分的 从理论上讲似乎对任何类型的变量的访问可
  • RFID智能仓储管理系统,更加智能化的仓储管理,你选择对了吗-新导智能

    不同的企业规模 产品类别 有着不同的仓储办理流程和需求 但核心的部分 都还在于进出库在内的库房作业和移库 盘库在内的库存操控作业 而跟着整个出产制作环境的改变 产品周期越来越短 多样少数的出产办法开始兴起 来自商场端的需求对仓储办理提出了更
  • MySQL 中的数据类型介绍

    据我统计 MySQL支持39种 按可使用的类型字段统计 即同义词也作多个 数据类型 下面的介绍可能在非常古老的mysql版本中不适用 转载请注明出处 http blog csdn net anxpp article details 5128
  • CSS样式--被忽略的前端基础(一)

    CSS样式 被忽略的前端基础 一 前言 以前学后端觉得前端不屑一顾 easy 后来从事前端开发后觉得其实并不简单 尤其是在css这一块 总觉得简单 没怎么系统的学习 现在觉得语言只是一种处理和解决问题工具 而你对基础掌握的深度影响着你解决问
  • H5选择本地文件夹下图片上传到服务器,并在网页中显示

    文章目录 基本 变种 html5 缺点 还要选择 基本
  • 面对“失业焦虑”我们可以做些什么?

    前言 在回答这个问题之前 我想先稍微聊一下我国当下的就业形势 当下的就业形势 近几年的就业形势非常严峻 除了疫情方面的影响 我认为更重要的是下行的经济环境带来的坏处 这二者相互叠加 给社会造就了如今这么复杂的就业现状 一 毕业生人数与就业岗
  • shell脚本中getopts的使用

    在shell中 getopts用于解析命令选项和参数 getopts是Bash shell的内置命令 不支持长选项 仅解析短选项 即一个破折号 和一个字母或数字 如 1 e E等 getopts格式如下 getopts OptString
  • 文件数据块分块算法解析

    文件数据块分块算法解析 1 简介 存储系统的重复数据删除过程一般是这样的 首先将数据文件分割成一组数据块 为每个数据块计算指纹 然后以指纹为关键字进行Hash查找 匹配则表示该数据块为重复数据块 仅存储数据块索引号 否则则表示该数据块是一个
  • CyclicLR pytorch实现

    论文 https arxiv org abs 1506 01186 论文中给了keras版本 1 如何寻找最大和最小学习率 参考https github com davidtvs pytorch lr finder 安装 python3 5
  • 9.1.3 定点数类型

    9 1 3 定点数类型 MySQL中的定点数类型只有DECIMAL一种类型 DECIMAL类型也可以使用 M D 进行表示 其中 M被称为精度 是数据的总位数 D被称为标度 表示数据的小数部分所占的位数 定点数在MySQL内部是以字符串的形
  • idea和eclipse修改背景颜色

    idea和eclipse修改背景颜色 idea修改背景颜色 file gt settings gt Editor gt Color Scheme gt 选择Darcula 应用即可 eclipse修改背景颜色 Window Preferen
  • k8s中Deployment模板

    apiVersion apps v1 kind Deployment metadata labels app app api name app api spec replicas 1 pod副本数 selector matchLabels
  • C++ 基础相关 备忘

    一 decltype 获取类型 typeid a name int i 0 decltype i j 0 cout lt lt typeid j name lt lt endl 二 编译选项 as needed g std c 11 o e
  • 电脑进不了桌面_XP系统进不了桌面,Explorer错误

    客户一台老电脑 XP系统进不了桌面 出现Explorer错误 故障原因 iexplore exe文件损坏或者系统中exe病毒 核心原因是垃圾软件进程注入explorer 3个解决方法 1 下载exe病毒专杀工具保存到u盘里面 U盘引导进PE
  • C++命名空间与头文件的关系

    C 命名空间与头文件的关系 一 添加一个头文件demonamespace h 内容如下 ifndef DEMONAMESPACE H define DEMONAMESPACE H class A public int value names
  • 【QT 网络云盘客户端】——主窗口界面的设计

    目录 1 设计主窗口界面 2 设置窗口的背景图片 3 自定义标题栏 3 1 设置toolbutton按钮的图片 3 2 设置按钮的大小 3 3 将自定义标题栏添加设置到主页面中 3 4 去除窗口的原标题栏 3 5 设置按钮颜色 3 6 切换
  • Netty实战(十四)WebSocket协议(二)

    WebSocket协议 二 一 初始化 ChannelPipeline 二 引导 三 加密 一 初始化 ChannelPipeline 我们之前说过为了将 ChannelHandler 安装到 ChannelPipeline 中 需要扩展了