comet的那些事儿

现在想试着翻译一下国外的文章,最近看到comet,它是一种长时间保持Http请求允许服务器传送数据到浏览器的web应用模式。

历史

早期的JAVA Applet

嵌入Java Applet到浏览器中可能创造了两种持久性的会话,使用了TCP的套接字(Socket)在服务器和浏览器中进行持久连接。只要浏览器保持这个applet,这个套接字能够保持监听。甚至这个通知可以以任何形式传输,如文本和二进制数据,同时被这个applet解码。

第一个comet应用

即使不知道comet,然而Comet框架出现在2000年,如Pushlets,Lightstreamer和KnowNow。 Pushlets是由van den Broecke写的,是第一个开源的框架。Pushlets是基于服务端的Java servlets和客户端的JavaScript库。Bang Networks是由网景的创始人Marc Andreessen开发的,创造了整个web的标准。在2001年4月,Chip Morningstar开始开发一个基于Java的使用了两个Http套接字来保持他设计的传统的http服务端和Douglas Crockford设计的客户端;一个基础的系统在2001年6月形成。这个客户端和服务端采用了基于状态软件的传递信息的方式,并同意Crockford的建议称以JSON的形式。在整个系统中,客户库,以JSON作为通信方式和服务端,组成了正式的应用框架,其中的一部分被收购了并被Sun公司、亚马逊、EDS 和Volkswagen使用。
在2004年,Selenium Remote Control开源了!它使用了一种Comet技术在浏览器中来获取远程命令的请求。浏览器会把最后的结果返回给命令,并在相同的TCP/IP请求中获取下一条命令。如果在没有监听到命令它就会一直等待直到有一条命令然后回复。它和Selenium-RC比较类似,把浏览器变成了Sockct监听器。Selenium2是每个浏览器真正的socket监听器,所以Comet技术并没有被使用。
在2006年3月,软件工程师Alex Russell在他的个人博客上编写了Comet的规则。这些规则主要针对Ajax。
在2006年,一些应用程序将这些技术应用得更广泛:如Meebo的多协议web版聊天应用能够让用户通过浏览器连接到AOL, 雅虎, 和微软聊天平台;谷歌在Gmail、JotSpot添加web版聊天应用,基于Comet的实时协同文档编辑。新的Comet公司和企业兴起,如基于JAVA的ICEfaces JSF框架。其它在传输上基于java-applet代替了纯JavaScript实现的应用。

实现

comet应用想要消除一页一页的网页模式的限制并提供两种持续的交互来进行轮询,还在服务端和客户端使用了一种持久的HTTP连接。由于浏览器和代理端没有针对服务端进行设计,而几种实现这方面的技术得到了发展,每个都有不同的优点和缺点。其中最大的障碍就是HTTP1.1的具体协议,它倡导客户端能够在打开不同的连接时保持。所以,在为了实时交互中保持一种连接对于浏览器自身的不足上有一定不好的影响。浏览器可能会在等待之前的请求的结果的时候阻碍发送新的请求,如,我们发送很多的图片。它只是不同的主机的别名能够为实时的信息创造不同的服务名。它的策略是一个局域分享的应用。
不同的方法实现Comet主要形成了流和长轮询两种主要的方式。

一个请求使用流的Comet来为所有Comet事件打开从客户端浏览器到服务器的单向持久连接。在连接没有断开时,每次服务端发送新的请求这些请求在客户端不端被处理和编译。

隐藏的框架

实现动态的web应用的技术是是使用隐藏的HTML框架元素(一个内部的框架,可以允许在网站中嵌入一个HTML元素到另一种元素中)。这种隐藏的框架元素能被分为不同的部分。当传递了event事件,这个框架元素一般会包含很多的script标签,包括了在浏览器中扩展的JS代码。因为浏览器逐步编译HTML页面,每个脚本元素会在浏览器中被扩展,浏览器能够包含1-2kb大小的文件。
框架的一个优点就是它能能够在每个共同的浏览中使用。而它的两个使用下降的原因:一是没有回复错误的处理方法,二是不能获取请求过程中的路径。

XMLHttpRequest

XMLHttpRequest(XHR),主要在浏览器到服务器的交互中使用了Ajax,同时它也能在服务器到浏览器Comet通信中为了XHR产生传统的数据格式数据。并在每次交互中使用浏览器化的JS代码,在每次它接受数据时浏览器就会释放它的状态。

长轮询的Ajax

上述的所有以流传输的浏览器都有副作用。这就促使了Comet开发者实现不同的复杂的流的传输中,同时根据浏览器来进行交互。由于Comet应用使用了长轮询,使得在浏览器在运行中,每个支持XHR的浏览器中实现更加简单。长轮询需要客户端在服务端中轮询每个事件。浏览器对服务端使用了Ajax的请求,服务端会一直保持监听直到有新的数据传递到浏览器,它还会完整的回复到浏览器。浏览器会初始化一个新的轮询请求来获取持久的事件。一些特殊的技术实现长轮询包括了以下技术:

XMLHttpRequest长轮询

在大多数情况下,XMLHttpRequest长轮询像任何的XHR的标准使用一样。浏览器会异步请求服务器,它会等待有效的数据在回复之前。这些回复能够在客户端扩展的时候包含编码数据(如XML或JSON)或者JavaScript脚本。在回复后,浏览器会创建并发送另一个XHR来等待下一个事件。浏览器经常在服务器保持一个请求来等待下一个事件发生的时候回复。

脚本标记长轮询

任何的Comet在子域中使用,但是上述的传输方式不能在不同的二级域(SLDs)中使用,因为浏览器的安全机制来阻碍跨站脚本攻击。如果二级域服务于网络主页面,Comet服务器会定位到另一个SLD,Comet事件不能通过使用这些交互机制来改变主页面的HTML和DOM。这个问题能够通过在一个或所有源数据前创造一个代理的服务器来避免。
不像框架(iframe)或XmlHttpRequest,脚本(Script)标签能够被任何URI指定,回复中的JavaScript代码会在当前的html文档中扩展。这样会对所有的服务器造成一个潜在的安全问题,然而数据提供者能够使用Jsoup来避免这些风险。
一个长轮询的Comet交互能够通过动态地新建script元素来创建,并且对Comet服务端设置源,然后再返回JavaScript和一些事件。每当脚本(Script)请求完成时,浏览器就会在XHR长轮询中打开一个新的任务。这种方式有跨浏览器的优点当允许可以跨域实现时。

译文: *https://en.wikipedia.org/wiki/Comet_(programming)*
标题基于SpringBoot+Vue的学生交流互助平台研究AI更换标题第1章引言介绍学生交流互助平台的研究背景、意义、现状、方法与创新点。1.1研究背景与意义分析学生交流互助平台在当前教育环境下的需求及其重要性。1.2国内外研究现状综述国内外在学生交流互助平台方面的研究进展与实践应用。1.3研究方法与创新点概述本研究采用的方法论、技术路线及预期的创新成果。第2章相关理论阐述SpringBoot与Vue框架的理论基础及在学生交流互助平台中的应用。2.1SpringBoot框架概述介绍SpringBoot框架的核心思想、特点及优势。2.2Vue框架概述阐述Vue框架的基本原理、组件化开发思想及与前端的交互机制。2.3SpringBoot与Vue的整合应用探讨SpringBoot与Vue在学生交流互助平台中的整合方式及优势。第3章平台需求分析深入分析学生交流互助平台的功能需求、非功能需求及用户体验要求。3.1功能需求分析详细阐述平台的各项功能需求,如用户管理、信息交流、互助学习等。3.2非功能需求分析对平台的性能、安全性、可扩展性等非功能需求进行分析。3.3用户体验要求从用户角度出发,提出平台在易用性、美观性等方面的要求。第4章平台设计与实现具体描述学生交流互助平台的架构设计、功能实现及前后端交互细节。4.1平台架构设计给出平台的整体架构设计,包括前后端分离、微服务架构等思想的应用。4.2功能模块实现详细阐述各个功能模块的实现过程,如用户登录注册、信息发布与查看、在线交流等。4.3前后端交互细节介绍前后端数据交互的方式、接口设计及数据传输过程中的安全问题。第5章平台测试与优化对平台进行全面的测试,发现并解决潜在问题,同时进行优化以提高性能。5.1测试环境与方案介绍测试环境的搭建及所采用的测试方案,包括单元测试、集成测试等。5.2测试结果分析对测试结果进行详细分析,找出问题的根源并
内容概要:本文详细介绍了一个基于灰狼优化算法(GWO)优化的卷积双向长短期记忆神经网络(CNN-BiLSTM)融合注意力机制的多变量多步时间序列预测项目。该项目旨在解决传统时序预测方法难以捕捉非线性、复杂时序依赖关系的问题,通过融合CNN的空间特征提取、BiLSTM的时序建模能力及注意力机制的动态权重调节能力,实现对多变量多步时间序列的精准预测。项目不仅涵盖了数据预处理、模型构建与训练、性能评估,还包括了GUI界面的设计与实现。此外,文章还讨论了模型的部署、应用领域及其未来改进方向。 适合人群:具备一定编程基础,特别是对深度学习、时间序列预测及优化算法有一定了解的研发人员和数据科学家。 使用场景及目标:①用于智能电网负荷预测、金融市场多资产价格预测、环境气象多参数预报、智能制造设备状态监测与预测维护、交通流量预测与智慧交通管理、医疗健康多指标预测等领域;②提升多变量多步时间序列预测精度,优化资源调度和风险管控;③实现自动化超参数优化,降低人工调参成本,提高模型训练效率;④增强模型对复杂时序数据特征的学习能力,促进智能决策支持应用。 阅读建议:此资源不仅提供了详细的代码实现和模型架构解析,还深入探讨了模型优化和实际应用中的挑战与解决方案。因此,在学习过程中,建议结合理论与实践,逐步理解各个模块的功能和实现细节,并尝试在自己的项目中应用这些技术和方法。同时,注意数据预处理的重要性,合理设置模型参数与网络结构,控制多步预测误差传播,防范过拟合,规划计算资源与训练时间,关注模型的可解释性和透明度,以及持续更新与迭代模型,以适应数据分布的变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值