`
xylong
  • 浏览: 191358 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

douyu之请求征程

 
阅读更多

前面的文章(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#斗鱼直播弹幕实时获取_c#斗鱼直播弹幕实时获取_C#TCP_c#弹幕_c#斗鱼弹幕_kids7pg_

    首先,"c#斗鱼直播弹幕实时获取"是核心目标,斗鱼直播平台提供了API接口,允许开发者通过特定的请求获取直播间的弹幕数据。为了实现实时获取,通常需要使用长连接的TCP协议,因为HTTP协议默认为短连接,无法满足持续...

    斗鱼直播源数据的获取

    在斗鱼直播平台,由于数据通常通过Ajax动态加载或API接口提供,开发者可能需要利用到这些特性来构造有效的请求。 "斗鱼直播源"标签暗示了获取的数据可能包括直播间的实时数据,如直播状态、观看人数、弹幕内容等。...

    php - 斗鱼直播.rar

    这个Token一般由开发者在斗鱼后台申请并获取,然后在请求时携带,确保请求的合法性。Token会有过期时间,需要根据情况适时更新。 “前端ifream”是将斗鱼直播嵌入到自建网站中的常见方法。IFrame可以让网页在一个...

    斗鱼第三方开放平台API文档v2.11

    斗鱼第三方开放平台API文档v2.11是武汉斗鱼网络科技有限公司提供的一个接口文档,主要服务于开发者,以便他们能够获取斗鱼直播平台的相关信息。这个文档包含了获取直播房间列表和详情、游戏分类等关键接口。 1. **...

    斗鱼主页源代码

    斗鱼是中国知名的直播平台,其主页作为用户与平台交互的核心界面,承载了丰富的功能和精美的特效。在分析“斗鱼主页源代码”时,我们可以深入理解网页开发、前端技术、用户体验设计等多个IT领域的关键知识点。 1. ...

    斗鱼直播弹幕助手

    7. **斗鱼直播API**:熟悉斗鱼提供的API文档至关重要,开发者需要了解如何获取API Key、如何构造请求以及如何解析响应,以确保程序能正确运行。 总结来说,“斗鱼直播弹幕助手”是一个利用Java编程语言实现的控制台...

    斗鱼直播间增强插件(Tampermonkey).zip

    【斗鱼直播间增强插件(Tampermonkey).zip】是一个使用JavaScript编写的浏览器扩展,主要针对斗鱼直播平台进行功能增强。Tampermonkey是一款非常流行的浏览器插件,它允许用户自定义添加JavaScript脚本来修改网页的...

    Swift仿斗鱼直播

    7. **多线程编程**: 为了保证用户体验,网络请求和复杂的计算通常在后台线程执行,然后更新UI到主线程。GCD(Grand Central Dispatch)和OperationQueue是Swift中管理并发任务的常用工具。 8. **推送通知**: 斗鱼...

    斗鱼弹幕服务器第三方接入协议v1.6.21

    斗鱼弹幕服务器第三方接入协议v1.6.21是武汉斗鱼网络科技有限公司为开发者提供的一个详尽的文档,旨在帮助第三方平台接入斗鱼的弹幕系统,从而获取并展示斗鱼直播间的实时弹幕信息。这个协议基于TCP服务,确保了数据...

    斗鱼弹幕数据分析

    【斗鱼弹幕数据分析】 斗鱼弹幕数据分析是一种利用编程技术、统计方法和自然语言处理技术,对在线直播平台斗鱼上的用户产生的弹幕进行深入探究的过程。这种分析旨在揭示观众的行为模式、情感倾向以及对直播内容的...

    斗鱼Html5播放器Chrome插件

    斗鱼Html5播放器Chrome插件,可自动取代斗鱼页面的Flash播放插件,使用html5进行播放。

    斗鱼直播demo

    【斗鱼直播demo】是一个基于斗鱼直播框架的示例项目,主要面向iOS开发者,用于展示如何在Xcode 8及更高版本中集成并实现斗鱼直播功能。这个压缩包包含了一个名为"DouYuZB-master"的源代码仓库,里面应该包含了完整的...

    手机斗鱼图片爬虫

    为了实现更高效和安全的爬取,我们可以利用Scrapy的延时下载策略(延迟请求,`download_delay`)来避免对目标网站造成过大的压力。同时,可以设置User-Agent,模拟不同的浏览器访问,防止被网站识别为机器人并被封禁...

    斗鱼获取实时弹幕/java代码

    斗鱼提供了RESTful API,开发者可以通过HTTP请求与服务器进行交互。为了获取弹幕数据,我们需要关注的是“弹幕推送”相关的接口。通常,这种接口会提供一个WebSocket服务,因为WebSocket能够实现实时双向通信,适合...

    微信小程序源码-仿斗鱼直播小程序.zip

    微信小程序源码-仿斗鱼直播小程序.zip微信小程序源码-仿斗鱼直播小程序.zip微信小程序源码-仿斗鱼直播小程序.zip微信小程序源码-仿斗鱼直播小程序.zip微信小程序源码-仿斗鱼直播小程序.zip微信小程序源码-仿斗鱼直播...

    仿斗鱼小程序

    开发者应掌握资源加载优化、懒加载、预加载策略,以及避免阻塞主线程的方法,确保小程序运行流畅。 9. **错误监控与调试**:在开发过程中,使用微信开发者工具进行调试和异常捕获至关重要,同时部署错误监控系统,...

    斗鱼TV弹幕获取

    【斗鱼TV弹幕获取】是一项技术实现,它涉及到网络编程、C++编程以及DLL动态链接库的使用。斗鱼TV作为一个热门的直播平台,其弹幕系统是互动性的重要体现,用户可以通过发送弹幕与主播和其他观众进行实时交流。在开发...

    python 斗鱼自动发送弹幕 图像匹配

    "斗鱼自动发送弹幕 图像匹配"这个项目是利用Python的图像识别和自动化功能来实现的一个具体应用。斗鱼是一个知名的直播平台,用户可以通过发送弹幕与主播和其他观众互动。在这个项目中,开发者创建了一个自动脚本来...

    高仿斗鱼直播App项目

    【高仿斗鱼直播App项目】是一个针对学习者设计的实战项目,旨在帮助开发者深入了解和掌握构建类似斗鱼直播应用程序的技术和流程。这个项目不仅涵盖了移动应用开发的基础知识,还涉及到了实时流媒体、社交互动、用户...

Global site tag (gtag.js) - Google Analytics