Netty也研究了一段时间,实践是对知识掌握的试金石。有些东西只是看了面儿上的东西我觉得懂了,如不去深入,一旦要用它去做点什么东西却又觉得无从下手。学车的时候,学员问教练我怎么算是学会开车了,教练告诉他当你倒着开和向前开一样自如的时候就算学会了。怎么算掌握了一项技术呢?我的观点,多阅读源码,然后去实践,如此反复,读源码就像倒车。
为啥用Netty去实现呢?首先提供了Http Codec,支持Http1.0/Http1.1。我们不用再花很大的力气去除encode和decode request和response。和Netty提供的HttpServer相反,我们只需要HttpResponseDecoder和HttpRequestEncoder。我们知道Http协议都是Header-Body。Http1.0通过Content-Length的header来控制body的长度,Http1.1做了一些改进使用chunk的方式编码chunk,通过一个0长度的chunk来标识body的结束。request和response的协议都是Header-body方式的。Netty使用HttpMessageEncoder和HttpMessageDecoder来编码和解码。response和request不同的只是第一行的内容。
都知道Netty是异步的,这样也带了一个问题,假如我同时在一个channel发送多个request,server也会有多个response过来。如果是同步的,一个请求发送到服务端然后等待response,处理完毕以后接着发送下一个request,如此反复。但是异步就不一样,他同时发送多个request到server而等待服务端的response,那这样我们怎么知道那个request和哪个response是一一对应的呢?针对每一个channel维持一个已发送队列,当发送一个request的时候同时加入到这个队列中,在收到服务端的response从队头中取出一个request即是与之对应的。这样方式看起来是合理的,但还是有潜在的隐患。这种模式和现实浏览器由很大不同,一般是一个connection一次只能用来发送一个request,而不是多个request。假设多个请求的话,服务端是多线程模型,很可能response返回的顺序和request的请求顺序是不一样的。(我的设想没有证明,也许是多虑了,各位看官觉得不对,欢迎指正)
解决了上面说的问题,一个HttpClient没有多少代码就实现了,同时我用NettyHttpClient抓取新浪的股票数据,再用上次的Comet实现了一个股票实时推送的例子

- 大小: 22.4 KB
分享到:
相关推荐
在本项目中,我们主要探讨如何使用JAVA编程语言调用海康威视(Hikvision)的SDK,以便实现摄像头的内网预览功能,并将视频流推送到阿里云服务。这一过程涉及到多个技术栈,包括后端开发、网络通信以及云端服务的集成...
Deliver 消息在CMPP协议中是指SMSC向SP推送用户接收的短信,它包含发送方号码、接收方号码、短信内容等关键信息。对于一个SP端应用来说,正确接收并处理 Deliver 消息是保证服务正常运行的基础。 然而,该小程序...
- **WebSocket**:为实现双向实时通信,可使用WebSocket协议,它允许服务器主动推送消息给客户端,降低延迟。 4. **内外网支持**: - **NAT穿透**:内外网通信可能遇到NAT(Network Address Translation)问题,...
这通常通过心跳包机制来实现,服务器定期发送更新到客户端,或者在状态变化时立即推送。 4. **数据存储**:游戏数据如角色信息、道具、等级等通常需要持久化存储。Java提供JDBC(Java Database Connectivity)接口...
少儿编程scratch项目源代码文件案例素材-纸人伙计.zip
scratch少儿编程逻辑思维游戏源码-忍者罗伊 V5.zip
scratch少儿编程逻辑思维游戏源码-跑和枪.zip
前端开发_基于jQuery和EasyUI框架_企业级Web应用UI组件库与后台管理系统模板_提供GPL开源版本和商业授权版本的双重授权模式_适用于快速构建响应式管理后台和复杂数据可
少儿编程scratch项目源代码文件案例素材-纸格通关 云变量.zip
微信机器人开发_Wechaty框架_百度云主机部署_自然语言处理_消息自动化处理_多媒体文件管理_聊天记录持久化_表情包导出_语音视频自动保存_文件管理系统集成_跨平台数据同步_个
少儿编程scratch项目源代码文件案例素材-钻机机器人.zip
少儿编程scratch项目源代码文件案例素材-作战基地.zip
云计算_微服务分布式架构SpringCloudSpringBootDubboVuejs_互联网云快速开发框架敏捷开发系统代码生成工作流CMS图表统计地图统计_免费开源JAVA企业
scratch少儿编程逻辑思维游戏源码-日落塔.zip
Tobapuww_GPT-Recovery-Files_12888_1745866661386
少儿编程scratch项目源代码文件案例素材-战斗竞技场.zip
scratch少儿编程逻辑思维游戏源码-球球大作战.zip
聚合支付系统/官方个人免签系统/三方支付系统稳定安全高并发 附教程 系统采用FastAdmin框架独立全新开发,安全稳定,系统支持代理、商户、码商等业务逻辑。 针对最近一些JD,TB等业务定制,子账号业务逻辑API 非常详细,方便内置对接! IP白名单 业务逻辑 支持IP白名单,黑名单,全局白名单,全局黑名单,保障系统的安全。 接口验签名 采用支付宝RSA加密接口方式,防止篡改数据,导致对账困难,资金大量损失,无故少钱 对接灵活 全部对接参数灵活操作 风控完善 轮询、交易金额、随机金额、最大金额、最小金额等 测试环境: Nginx+PHP7.0+MySQL5.6 网站运行目录:/public 伪静态设置为:thinkphp规则 数据库信息修改路径:/application/database.php
校园社交服务_微信小程序云开发_公告资讯失物招领二手交易兼职招聘表白墙_为高校师生提供一站式校园生活服务平台包含校园动态通知课程表查询失物发布与认领二手物品交易平台兼职信息发布与求
yinghuayu2377_myFTPDemo_32152_1745866651913