前面的文章(http://xylong.iteye.com/blog/1841579)简要讲述了douyu的大致结构,这里我将带大家开启douyu请求的征程,其实web服务器简要的讲无非请求响应的一个过程,脱离不了http/tcp-ip等网络协议,如何接受请求,处理请求,直至应用web容器(更准确地说是java这块是servlet)的API,对接具体的业务逻辑,不论是很早的技术(jsp-servlet),还是近些年的struts等都是如此,上面只是自己一个比较粗糙的认识,只想给各位看官一个大致的认识,更细节性的东西,下面慢慢讲。
douyu-startup中的Server作为服务器的启动类
Server server = new Server(); // Connector ajp = new AjpConnector(); Connector http = new HttpConnector(); // server.addConnectors(ajp, http); // server.addConnector(ajp); server.addConnector(http); String baseDir = new File(".").getCanonicalPath(); String srcDir = new File(baseDir, "src/main/java").getCanonicalPath(); System.out.println("src dir: " + srcDir); String resourcesDir = new File(baseDir, "src/main/resources").getCanonicalPath(); server.getConfig().addClassPath(resourcesDir); System.out.println("resources dir: " + resourcesDir); String classesDir = new File(baseDir, "douyu-examples-classes").getCanonicalPath(); System.out.println("classes dir: " + classesDir); //初始化参数,应用名称,编码格式等 server.init("douyu-examples", "UTF-8", srcDir, classesDir, true, null); //启动方式 server.start();
上面的示例很明显地提供了两种协议处理方式(http/ajp),如果不指定处理方式,默认是httpConnector,httpConnector与AjpConnector有一个共同的抽象父类Connector,在Connector的start()方法中,我们很惊奇地看到了douyu是如何集成netty框架的,
this.config = config;
// Configure the server.
ServerBootstrap bootstrap = new ServerBootstrap(new NioServerSocketChannelFactory(Executors
.newCachedThreadPool(), Executors.newCachedThreadPool()));
// Set up the event pipeline factory.
bootstrap.setPipelineFactory(getChannelPipelineFactory());
// Bind and start to accept incoming connections.
bootstrap.bind(new InetSocketAddress(host, port));
上面代码标红的地方其实是一个抽象方法,留给httpConnector与ajpConnector的不同协议的处理方式,一个比较实用的设计模式,下面我们看看httpConnector的处理过程。
相关推荐
c#斗鱼直播弹幕实时获取,基于TCP协议封装。
斗鱼主页特效
斗鱼Html5播放器Chrome插件,可自动取代斗鱼页面的Flash播放插件,使用html5进行播放。
python 斗鱼自动发送弹幕。 识别图像并定位到发送按钮,输入文字,点击发送。
英雄联盟lol直播、穿越火线cf直播、dota2直播、激战2等各类热门游戏赛事直播随时观看,“斗鱼直播”打造全民游戏直播热潮! 【更新说明】 【注意】如遇到版本升级失败,请到斗鱼官网下载最新版本安装。 【优化】...
高仿斗鱼app源码
本项目是模仿斗鱼iOS最新版本,使用 `Swift4.0`开发,所有资源均来自斗鱼,API接口通过抓取斗鱼App获得,仅供学习参考使用。 整个项目比较大,我是利用闲余时间写的,未完成功能较多,后面会持续更新完成。。。 请...
已打包为exe,可以直接运行。 双击exe,弹出cmd窗口,显示运行数据,并写入txt。 关闭程序,结束获取,已获取部分可正常,不受影响。 源码,请参考博客。
仿斗鱼iOS最新版本,使用 Swift4.0开发,所有资源均来自斗鱼,API接口通过抓取斗鱼App获得,仅供学习参考使用.
摘要斗鱼弹幕通讯协议是一种分布式的文本信息系统。斗鱼弹幕通讯协议是一种基于 TCP 服务的应用层协议。斗鱼弹幕通讯协议规定了斗鱼服务与获取弹幕客户端之间交互弹幕
斗鱼弹幕效果展示
原理: 基于获取m3u8链接,通过FFmpeg解析,下载视频 ...2. 打开斗鱼视频站看一个视频。 http filermonitor会拿到视频的playlist 3. 将playlist 拷贝粘帖到hls下载助手点击开始。 4. hls下载助手下载文件后合并成ts视频
斗鱼数据库混合云架构实践.pdf
实时获取斗鱼弹幕,包括弹幕类型,用户信息,用户等级等
斗鱼招股书.pdf
保存小码哥的斗鱼直播代码2期保存
https://blog.csdn.net/xbw12138/article/details/81478225 通过分析直播弹幕数据,对主播进一步了解。
通过python实现抓取指定斗鱼弹幕。
使用scrapy框架写的爬虫,爬取斗鱼美女主播图片,还需要将settings.py下的路径修改即可使用。
PHP直播整合导航网站源码斗鱼直播虎牙直播电