热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

什么是服务器异步响应?-Whatisaserverasynchronousresponse?

Imreadingaboutreal-timeweb,andIvenoticedasentenceallowDjangotodoasyncresponses.For

I'm reading about real-time web, and I've noticed a sentence allow Django to do async responses. For what I understood till now was that it is possible to achieve parallelism on the client by issuing multiple Http requests form the same side using Ajax, but for the server, those are just separated requests each handled in ins own threas.

我正在阅读实时网络,我注意到一个句子允许Django做异步响应。我迄今理解的是,通过使用Ajax在同一侧发出多个Http请求,可以在客户端实现并行性,但对于服务器,这些只是分离的请求,每个请求都在自己的threas中处理。

How I see it working:

我怎么看它起作用:

  1. Client sends two requests
  2. 客户端发送两个请求

  3. Server receives them and solves them each in its own thread, and returns to client
  4. 服务器接收它们并在其自己的线程中解决它们,并返回到客户端

What is a conceptual example of a async server?

什么是异步服务器的概念示例?

2 个解决方案

#1


8  

HTTP is a blocking, synchronous protocol. This means that the client has to wait for a response from the server before it can continue. The server blocks the clients from doing anything; because the client has to wait for the response to come through. Once the response is received by the browser, the connection is dropped and then another connection is opened and the process repeats till all the elements of the page have been fetched to be displayed.

HTTP是一种阻塞的同步协议。这意味着客户端必须等待服务器的响应才能继续。服务器阻止客户端做任何事情;因为客户必须等待响应才能通过。一旦浏览器收到响应,连接就会被删除,然后打开另一个连接并重复该过程,直到获取了页面的所有元素以进行显示。

This is the state of the web, and the nature of the HTTP protocol.

这是Web的状态,以及HTTP协议的本质。

Ajax simply creates a background process that does what the browser would have done - it is still blocking, but the end effect is that the user can still interact with the client. The browser is displaying something and is not effectively "blocked".

Ajax只是创建一个后台进程来完成浏览器所做的事情 - 它仍然是阻塞的,但最终结果是用户仍然可以与客户端进行交互。浏览器正在显示某些内容,但未被有效“阻止”。

The "realtime" web allows you to have an open socket that is non-blocking, asynchronous. Asynchronous means that you don't have to wait for the response to come back - the client isn't blocked. You can send off multiple requests, and then when the server is done with them, it will respond back. You don't have to "wait".

“实时”Web允许您拥有一个非阻塞,异步的开放套接字。异步意味着您不必等待响应返回 - 客户端未被阻止。您可以发送多个请求,然后当服务器完成它们时,它将回复。你不必“等待”。

Many things you use everyday are asynchronous:

你每天使用的很多东西都是异步的:

  1. Any chatting application - like IRC, facebook messenger, whatapp, etc.
  2. 任何聊天应用程序 - 如IRC,facebook messenger,whatapp等。

  3. A telephone conversation with a really chatty friend (typically, you would wait to hear the other person's response, but some people just talk and talk...).
  4. 与一个非常健谈的朋友进行电话交谈(通常,你会等到听到对方的回应,但有些人只是说话和谈话......)。

  5. Anything that is streaming, like YouTube.
  6. 任何流媒体,如YouTube。

Think of it as simply "one side doesn't have to wait to start transmitting again".

把它简单地想象为“一方不必等待再次开始传输”。

In web, realtime is enabled by getting around the limitations of HTTP. This is where WebSockets and Server sent events (SES) come in.

在Web中,通过绕过HTTP的限制来实现实时。这是WebSockets和Server发送事件(SES)的用武之地。

The first is a standard way of opening a full-duplex (that is, you can send and receive at the same time) channel over TCP.

第一种是通过TCP打开全双工(即,您可以同时发送和接收)信道的标准方法。

The second (SES) is still being standardized as part of HTML5 but it allows the server to push notifications to the client instead of the client having to poll the server for events. So instead of you sending a request to check for updates, the server will tell you when there is an update - like "don't call me, I'll call you".

第二个(SES)仍然被标准化为HTML5的一部分,但它允许服务器将通知推送到客户端,而不是客户端必须轮询服务器以查找事件。因此,不是您发送检查更新的请求,服务器会告诉您何时有更新 - 例如“不要打电话给我,我会打电话给您”。

#2


3  

Here is a conceptual diagram how it works, you can see that the server-side (HTTP Server) is answering for async requests from a DIV, so each answer can be seen as an async answer.

下面是它如何工作的概念图,您可以看到服务器端(HTTP Server)正在回答来自DIV的异步请求,因此每个答案都可以看作是异步答案。

Due the answers come from a server which is able to serve in a async way, then the server can be considerate a async server.

由于答案来自能够以异步方式提供服务的服务器,因此服务器可以考虑异步服务器。

Sequential diagram

BTW, the article/diagram comes from an .NET scenary, AJAX behavior is generic and that is the way how it works on a general view.

顺便说一句,文章/图表来自.NET风格,AJAX行为是通用的,这是它在一般视图上的工作方式。


推荐阅读
  • 深入探索HTTP协议的学习与实践
    在初次访问某个网站时,由于本地没有缓存,服务器会返回一个200状态码的响应,并在响应头中设置Etag和Last-Modified等缓存控制字段。这些字段用于后续请求时验证资源是否已更新,从而提高页面加载速度和减少带宽消耗。本文将深入探讨HTTP缓存机制及其在实际应用中的优化策略,帮助读者更好地理解和运用HTTP协议。 ... [详细]
  • Node.js 教程第五讲:深入解析 EventEmitter(事件监听与发射机制)
    本文将深入探讨 Node.js 中的 EventEmitter 模块,详细介绍其在事件监听与发射机制中的应用。内容涵盖事件驱动的基本概念、如何在 Node.js 中注册和触发自定义事件,以及 EventEmitter 的核心 API 和使用方法。通过本教程,读者将能够全面理解并熟练运用 EventEmitter 进行高效的事件处理。 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 本文探讨了如何通过编程手段在Linux系统中禁用硬件预取功能。基于Intel® Core™微架构的应用性能优化需求,文章详细介绍了相关配置方法和代码实现,旨在帮助开发人员有效控制硬件预取行为,提升应用程序的运行效率。 ... [详细]
  • CTF竞赛中文件上传技巧与安全绕过方法深入解析
    CTF竞赛中文件上传技巧与安全绕过方法深入解析 ... [详细]
  • 本文深入探讨了Ajax的工作机制及其在现代Web开发中的应用。Ajax作为一种异步通信技术,改变了传统的客户端与服务器直接交互的模式。通过引入Ajax,客户端与服务器之间的通信变得更加高效和灵活。文章详细分析了Ajax的核心原理,包括XMLHttpRequest对象的使用、数据传输格式(如JSON和XML)以及事件处理机制。此外,还介绍了Ajax在提升用户体验、实现动态页面更新等方面的具体应用,并讨论了其在当前Web开发中的重要性和未来发展趋势。 ... [详细]
  • 本文探讨了如何利用 jQuery 的 JSONP 技术实现跨域调用外部 Web 服务。通过详细解析 JSONP 的工作原理及其在 jQuery 中的应用,本文提供了实用的代码示例和最佳实践,帮助开发者解决跨域请求中的常见问题。 ... [详细]
  • TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得
    TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得 ... [详细]
  • 分布式开源任务调度框架 TBSchedule 深度解析与应用实践
    本文深入解析了分布式开源任务调度框架 TBSchedule 的核心原理与应用场景,并通过实际案例详细介绍了其部署与使用方法。首先,从源码下载开始,详细阐述了 TBSchedule 的安装步骤和配置要点。接着,探讨了该框架在大规模分布式环境中的性能优化策略,以及如何通过灵活的任务调度机制提升系统效率。最后,结合具体实例,展示了 TBSchedule 在实际项目中的应用效果,为开发者提供了宝贵的实践经验。 ... [详细]
  • 本文详细解析了JSONP(JSON with Padding)的跨域机制及其工作原理。JSONP是一种通过动态创建``标签来实现跨域请求的技术,其核心在于利用了浏览器对``标签的宽松同源策略。文章不仅介绍了JSONP的产生背景,还深入探讨了其具体实现过程,包括如何构造请求、服务器端如何响应以及客户端如何处理返回的数据。此外,还分析了JSONP的优势和局限性,帮助读者全面理解这一技术在现代Web开发中的应用。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 本文深入探讨了Spring Cloud Eureka在企业级应用中的高级使用场景及优化策略。首先,介绍了Eureka的安全配置,确保服务注册与发现过程的安全性。接着,分析了Eureka的健康检查机制,提高系统的稳定性和可靠性。随后,详细讨论了Eureka的各项参数调优技巧,以提升性能和响应速度。最后,阐述了如何实现Eureka的高可用性部署,保障服务的连续性和可用性。通过这些内容,开发者可以更好地理解和运用Eureka,提升微服务架构的整体效能。 ... [详细]
  • PHP连接MySQL的三种方法及预处理语句防止SQL注入的技术详解
    PHP连接MySQL的三种方法及预处理语句防止SQL注入的技术详解 ... [详细]
  • 如何在Android应用中设计和实现专业的启动欢迎界面(Splash Screen)
    在Android应用开发中,设计与实现一个专业的启动欢迎界面(Splash Screen)至关重要。尽管Android设计指南对使用Splash Screen的态度存在争议,但一个精心设计的启动界面不仅能提升用户体验,还能增强品牌识别度。本文将探讨如何在遵循最佳实践的同时,通过技术手段实现既美观又高效的启动欢迎界面,包括加载动画、过渡效果以及性能优化等方面。 ... [详细]
author-avatar
mobiledu2502931077
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有