当前位置: 首页 > news >正文

netty websocket学习

【硬核】肝了一月的Netty知识点

超详细Netty入门,看这篇就够了!

bzm_netty_sb
netty-chat
vue+websokect实现实时聊天,可单聊、可群聊(一)
vue实现聊天栏定位到最底部(超简单、可直接复制使用)
vue实现指定div右键显示菜单,并实现复制内容到粘贴板

Springboot实现websocket(连接前jwt验证token)

vue中audio标签自定义音频播放栏

netty-websocket 鉴权token及统一请求和响应头(鉴权控制器)

一个优秀活跃的视频转码项目分享

动手打造属于自己的直播间(Vue+SpringBoot+Nginx)
互联网实时聊天系统 (Spring + Netty + Websocket)

42-Netty基础-Websocket-Netty握手源码分析 - B站视频 - 很详细
43-FrameDecoder源码分析
44-Netty基础-WebSocket08FrameEncoder源码分析
46-Netty基础-WebSocket-HandshakeComplete握手成功事件
47-Netty基础-WebSocket-DefaultChannelGroup消息群发

【netty专栏】 - 待学习

WebSocket协议:5分钟从入门到精通

SpringBoot+Netty+WebSocket实现在线聊天 有对应的B站视频和代码-已fork - 代码

SpringBoot 整合 Netty + Websocket

Spring boot 项目(二十三)——用 Netty+Websocket实现聊天室

springBoot + netty搭建高性能 websocket 服务 & 性能测试(包含python 测试脚本)
springBoot使用webSocket的几种方式以及在高并发出现的问题及解决

SpringBoot2+Netty+WebSocket(netty实现websocket,支持URL参数)
SpringBoot整合Netty处理WebSocket(支持url参数)
使用Netty处理WebSocket请求

SpringBoot 集成 Netty 使用WebSocket功能,并实现token校验

微服务springcloud环境下基于Netty搭建websocket集群实现服务器消息推送----netty是yyds

SpringBoot2+Netty+WebSocket(netty实现websocket)

SpringBoot 整合 Netty 实现 WebSocket

Netty实战,Springboot + netty +websocket 实现推送消息

springboot实现webrtc

更新啦,SpringBoot+websocket聊天-增加语音功能

Springboot整合WebSocket实现网页版聊天,快来围观!

Spring WebSocket传递多媒体消息

Springboot+Netty搭建分布式的WebSocket简单集群,后续完善即时通讯聊天系统

SpringBoot+Netty+WebSocket+Vue+ProtocolBuffer 高并发弹幕 - 代码全

EasyMedia项目 — Springboot、netty实现的http-flv、websocket-flv直播点播,支持rtsp、h264、h265、rtmp等多种源,h5纯js播放(不依赖flash),不需要nginx等第三方拉流服务

js Blob、ArrayBuffer(Uint8Array、TypedArray、DataView)、Buffer、DataUrl
【OFD】ArrayBuffer 和 Uint8Array

package com.zzhua.test06;import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.EventLoopGroup;
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.*;
import io.netty.handler.codec.http.websocketx.WebSocketServerProtocolConfig;
import io.netty.handler.codec.http.websocketx.WebSocketServerProtocolHandler;public class NettyWsServer {public static void main(String[] args) throws InterruptedException {EventLoopGroup bossGroup = new NioEventLoopGroup();EventLoopGroup workerGroup = new NioEventLoopGroup(16);try {ServerBootstrap serverBootstrap = new ServerBootstrap();serverBootstrap.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class).childHandler(new ChannelInitializer<SocketChannel>() {@Overrideprotected void initChannel(SocketChannel ch) throws Exception {ch.pipeline().addLast("http-decoder", new HttpRequestDecoder());ch.pipeline().addLast("http-encoder", new HttpResponseEncoder());ch.pipeline().addLast("aggregator", new HttpObjectAggregator(65536));WebSocketServerProtocolConfig wsServerConfig = WebSocketServerProtocolConfig.newBuilder().websocketPath("/websocket").maxFramePayloadLength(Integer.MAX_VALUE).checkStartsWith(true).build();ch.pipeline().addLast("websocketHandler", new WebSocketServerProtocolHandler(wsServerConfig));ch.pipeline().addLast("wsTextHandler", new WsTextHandler());}});ChannelFuture channelFuture = serverBootstrap.bind(8080).sync();channelFuture.channel().closeFuture().sync();} finally {workerGroup.shutdownGracefully();bossGroup.shutdownGracefully();}}
}
package com.zzhua.test06;import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.handler.codec.http.websocketx.PingWebSocketFrame;
import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
import io.netty.handler.codec.http.websocketx.WebSocketFrame;import java.nio.charset.StandardCharsets;public class WsTextHandler extends SimpleChannelInboundHandler<WebSocketFrame> {@Overrideprotected void channelRead0(ChannelHandlerContext ctx, WebSocketFrame msg) throws Exception {System.out.println("收到消息: " + msg.content().toString(StandardCharsets.UTF_8));TextWebSocketFrame textWebSocketFrame = new TextWebSocketFrame();textWebSocketFrame.content().writeBytes("收到了".getBytes());ctx.channel().writeAndFlush(textWebSocketFrame);}
}
<script>var ws = new WebSocket('ws://localhost:8080/websocket')ws.onmessage  = msg => {console.log('收到消息: ' + msg.data);}ws.onclose = () => {console.log('关闭连接');}ws.onerror = () => {console.log('连接错误');}ws.onopen = function (event) {console.log("建立连接成功")ws.send('halo')}</script>

相关文章:

netty websocket学习

【硬核】肝了一月的Netty知识点 超详细Netty入门&#xff0c;看这篇就够了&#xff01; bzm_netty_sb netty-chat vuewebsokect实现实时聊天&#xff0c;可单聊、可群聊&#xff08;一&#xff09; vue实现聊天栏定位到最底部&#xff08;超简单、可直接复制使用&#xff09;…...

【数据结构】环形队列

环形队列 1. 定义 环形队列就是将队列在逻辑上看作环形结构、物理上仍是数组形式存储的一种数据结构。 其实现主要分为两种情况&#xff1a; 浪费空间法记录空间法 2. 实现 实现要考虑的是成员变量 2.1 记录空间法 使用used标识当前存储了多少元素&#xff0c;如果为空&a…...

嵌入式C编码规范

嵌入式C编码规范 编码规范&#xff0c;没有最好&#xff0c;只有最合适&#xff0c;有但不执行不如没有。 嵌入式C编码规范 https://mp.weixin.qq.com/s/z4u3YnF6vdQ1olsLeF-y_A 更多嵌入式信息请关注微信公众号【嵌入式系统】...

Golang 并发 — 流水线

并发模式 我们可以将流水线理解为一组由通道连接并由 goroutine 处理的阶段。每个阶段都被定义为执行特定的任务&#xff0c;并按顺序执行&#xff0c;下一个阶段在前一个阶段完成后开始执行。 流水线的另一个重要特性是&#xff0c;除了连接在一起&#xff0c;每个阶段都使用…...

Elasticsearch:什么是非结构化数据?

非结构化数据定义 非结构化数据是指未按照设计的模型或结构组织的数据。 非结构化数据通常被归类为定性数据&#xff0c;可以是人类或机器生成的。 非结构化数据是最丰富的可用数据类型&#xff0c;经过分析后&#xff0c;可用于指导业务决策并在许多其他用例中实现业务目标。…...

15:00的面试,15:06就出来了,问的问题过于变态了。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到5月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…...

Web自动化测试怎么做?Web网页测试全流程解析

1、功能测试 web网页测试中的功能测试&#xff0c;主要测试网页中的所有链接、数据库连接、用于在网页中提交或获取用户信息的表单、Cookie 测试等。 &#xff08;1&#xff09;查看所有链接&#xff1a; 测试从所有页面到被测特定域的传出链接。 测试所有内部链接。 测…...

MySQL数据库SQLSTATE[22007]: Invalid datetime format 日期类型不能为空值的解决办法

如果你的数据库是mysql&#xff0c; 如果你创建表或插入数据时遇到的BUG–它长这样&#xff1a; Invalid datetime format: 1292 Incorrect datetime value: ‘’ for column ‘xxx’ at row 1 或 1067 - Invalid default value for ‘xx’ 那么我将赐予你 两套剑法: &#…...

搬运工让你分分钟了解Web接口测试

01、什么是接口 百度说&#xff1a;接口泛指实体把自己提供给外界的一种抽象化物&#xff08;可以为另一实体&#xff09;&#xff0c;用以由内部操作分离出外部沟通方法&#xff0c;使其能被内部修改而不影响外界其他实体与其交互的方式 上面这句有点抽象&#xff0c;网上的…...

作业12.5

1.定义一个基类 Animal&#xff0c;其中有一个虛函数perform&#xff08;)&#xff0c;用于在子类中实现不同的表演行为。 #include <iostream>using namespace std; class Animal { private:int weight; public:Animal(){}Animal(int weight):weight(weight){}virtual …...

leetCode 47. 全排列 II + 回溯算法 + 图解 + 笔记

给定一个可包含重复数字的序列 nums &#xff0c;按任意顺序 返回所有不重复的全排列 示例 1&#xff1a; 输入&#xff1a;nums [1,1,2] 输出&#xff1a; [[1,1,2],[1,2,1],[2,1,1]] 示例 2&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1,2,3],[1,3,2…...

Maya 2024(3D建模、动画和渲染软件)

Maya 2024是一款非常强大的3D建模、动画和渲染软件&#xff0c;它提供了许多新功能和改进&#xff0c;以帮助建模师、动画师和渲染师更加高效地进行创作。 在建模方面&#xff0c;Maya 2024引入了Symmetry&#xff08;对称&#xff09;功能&#xff0c;可以在网格两侧生成均匀…...

C++作业5

完成沙发床的多继承&#xff08;有指针成员&#xff09; 代码&#xff1a; #include <iostream>using namespace std;class Bed { private:double *money; public:Bed(){cout << "Bed::无参构造函数" << endl;}Bed(double money):money(new doub…...

Go语言很难吗?为什么 Go 岗位这么少?

其实这个话题已经躺在我的 TODO 里很久了&#xff0c;近来很多社区的小伙伴都私下来交流&#xff0c;也有在朋友圈看吐槽 Go 上海的大会没什么人。还不如 Rust 大会&#xff0c;比较尴尬。 今天主要是从个人角度看看为什么 Go 岗位看起来近来很难的样子&#xff1f; 盘一下数…...

为什么要替换 Object.defineProperty?

目录 前言&#xff1a;为什么要替换 Object.defineProperty&#xff1f; 详解&#xff1a;为什么要替换 Object.defineProperty&#xff1f; 总结&#xff1a; 前言&#xff1a;为什么要替换 Object.defineProperty&#xff1f; JavaScript中的Object.defineProperty是一种…...

百马百担c语言编程

以下是一个百马百担问题的C语言编程实现&#xff1a; #include <stdio.h>int main() { int n, m, k; scanf("%d%d%d", &n, &m, &k); int a[n], b[m], c[k]; for (int i 0; i < n; i) { scanf("%d", &a[i]);…...

C++检测字符串中有效的括号个数

匹配一个字符串buf中&#xff0c;连续包换运算符reg的次数&#xff1a; #include <iostream>//return 返回匹配的字符个数 //buf, 要检测的字符串 //reg, 包含的连续运算符 int GetMatchCount(std::string& buf, std::string& reg) {int nMatchCount 0;if (reg.…...

前端依赖下载速度过慢解决方法,nrm 镜像管理工具

npm 默认镜像 &#xff1a;https://registry.npmjs.org/ 问题 使用 npm install 安装依赖的时候&#xff0c;受网络的限制&#xff0c;速度会很慢。 解决 使用国内镜像代理。 nrm nrm 是镜像源管理工具&#xff1b; 1. 安装 nrm npm install nrm --global# 查看镜像源列…...

如何为 3D 模型制作纹理的最佳方法

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 您可以通过不同的方式为 3D 模型创建 3D 纹理。下面我们将介绍为 3D …...

智慧校园:TSINGSEE青犀智能视频监控系统,AI助力优化校园管理

随着科技的飞速发展和信息化社会的到来&#xff0c;智慧校园已经成为教育领域的一种新型发展模式。智慧校园的需求和发展趋势日益显现&#xff0c;其建设已成为当今教育信息化发展的重要方向。 TSINGSEE青犀结合高可靠、高性能的云计算、人工智能、大数据、物联网等技术&#…...

在RK3576开发板上手把手编译并运行你的第一个MPP编码程序(含VSCode配置避坑)

在RK3576开发板上从零构建MPP编码开发环境的完整指南 1. 开发环境准备与交叉编译工具链配置 对于嵌入式开发者而言&#xff0c;RK3576开发板的MPP开发环境搭建需要从基础工具链开始。不同于x86平台的开发&#xff0c;我们需要特别注意交叉编译环境的配置细节。 首先需要获取适用…...

GB28181实战:Windows环境下WVP-GB28181部署全攻略

1. Windows环境下WVP-GB28181部署全攻略 如果你正在寻找一个在Windows系统上快速搭建GB28181视频监控平台的方法&#xff0c;那么WVP-GB28181绝对是个不错的选择。作为一个开源的视频监控平台&#xff0c;WVP-GB28181支持国标GB/T28181协议&#xff0c;能够帮助你轻松实现视频设…...

新手福音:用快马平台生成Anaconda环境下的Python数据分析示例代码

作为一名刚接触Python数据分析的新手&#xff0c;我最近在学习Anaconda环境下的数据处理和可视化。刚开始配置环境和写代码时&#xff0c;经常被各种报错搞得手忙脚乱。后来发现了InsCode(快马)平台&#xff0c;它帮我快速生成了一个完整的示例项目&#xff0c;让我对数据分析流…...

告别串口线!手把手教你用WCH-LinkE的SDI功能实现CH32V303RCT6的无线调试打印

无线调试革命&#xff1a;基于WCH-LinkE的SDI功能实现CH32V303RCT6高效打印 调试嵌入式系统时&#xff0c;串口打印是最常用的调试手段之一。然而传统串口调试需要占用宝贵的硬件UART资源&#xff0c;在IO口紧张或串口已被占用的场景下尤为不便。沁恒微电子推出的SDI(Serial Da…...

OZON跨境电商的供应链之痛:爆单AI选品后为什么你拿货比别人贵?

选品决定利润的上限&#xff0c;供应链决定利润的下限做跨境电商&#xff0c;有一个残酷的事实&#xff1a;同样的商品&#xff0c;你卖100块&#xff0c;利润20块。别人卖90块&#xff0c;利润还有25块。为什么&#xff1f;不是你卖得不好&#xff0c;不是你运营不行&#xff…...

双阶段目标检测是什么?有什么用?

一、引言在计算机视觉技术飞速发展的当下&#xff0c;目标检测作为核心分支&#xff0c;早已从实验室走向现实生活的方方面面&#xff0c;成为人工智能感知世界的关键入口。所谓目标检测&#xff0c;就是让计算机通过对图像、视频的分析&#xff0c;同步完成物体定位与物体分类…...

狗狗6种行为识别检测数据集(近3000张图片已标注)| YOLO训练数据集 AI视觉检测

狗狗6种行为识别检测数据集&#xff08;近3000张图片已标注&#xff09;| YOLO训练数据集 AI视觉检测 摘要 在AI视觉落地宠物经济的浪潮中&#xff0c;狗狗行为识别一直是一个非常有商业价值和趣味性的方向。为了帮助大家更高效地训练模型&#xff0c;我整理并开源了一套高质…...

Grep vs RAG vs ACE:AI编程助手如何选择?实测对比三大代码检索技术

Grep vs RAG vs ACE&#xff1a;AI编程助手技术选型实战指南 当团队需要引入AI编程助手时&#xff0c;技术负责人常陷入工具选择的困境。市面上主流的代码检索技术可分为三大流派&#xff1a;基于传统文本匹配的Grep路线、依赖向量数据库的RAG方案&#xff0c;以及新兴的混合检…...

告别串口!STM32F105RCT6的ITM调试秘籍:从零配置到华为/高通项目级日志封装

STM32F105RCT6 ITM调试实战&#xff1a;企业级日志系统设计与性能优化 在嵌入式开发领域&#xff0c;调试效率直接影响项目进度和质量。传统串口调试方式虽然简单易用&#xff0c;但在处理复杂企业级项目时往往显得力不从心。本文将深入探讨基于STM32F105RCT6的ITM调试技术&…...

哔哩哔哩第三方开放平台软件bilipai7.0.2

bilipai是一款面向B站内容爱好者的第三方安卓客户端&#xff0c;它有着清新灵动的界面风格和流畅自然的操作体验&#xff0c;能完整同步B站的各类视频资源&#xff0c;包括番剧、动画、知识科普、生活分享等内容类别&#xff0c;用户登录账号后&#xff0c;还可以实时同步自己的…...