基于Node.js和WebSocket的实时Web应用程序解决方案外文翻译资料

 2023-01-16 04:01

文献翻译:A Real-Time Web Application Solution Based on Node.js and WebSocket

基于Node.js和WebSocket的实时Web应用程序解决方案

作者

Shuman Zhao, Xiaoling Xia and Jiajin Le

DonghuaUniversity,Shanghai,China

zsm_happy@163.com,sherlysha@dhu.edu.cn,lejiajin@dhu.edu.cn

关键字:Web开发;WebSocket;Node.js; 即时的;Web应用程序

摘要

随着计算机技术的飞速发展,我们对实时信息的需求越来越高,许多如在线预订系统,股票交易系统,即时消息系统的实时Web应用程序,都应实时将服务器的不断变化发送给客户端。在对HTML5标准的WebSocket协议进行深入研究的基础上,本文提出了一种基于Node.js和WebSocket的新型实时Web应用程序解决方案,能够显着提高实时通讯性能,更有效地利用服务器的处理能力。在本文最后,我们将该解决方案应用于“你画我猜”游戏中,从而验证该方案在理论和实践上研究该解决方案的可行性,总结出其与传统解决方案相比的优势。

介绍

Web应用程序的数据交互通常是通过客户端发送请求,服务器接收请求,并检查合法性后进行处理,然后将处理结果返回给客户端以呈现信息。许多站点使用诸如轮询,长时间轮询,流媒体传输之类的解决方案来实现实时交互需求。这类解决方案的本质都是使用Ajax技术来模拟实时效果,而不是真正的实时交互。这种传统方式有明显的弊端:客户端向服务器发送恒定的请求,每个Http请求和响应都具有完整的报文头信息,增加了数据传输量,甚至会占用大量带宽和服务器资源。

HTML5的WebSocket协议提供了一种新技术来替代我们过去几年一直使用的Ajax。WebSocket可以通过单个TCP连接提供全双工通信通道[1],构建实时Web应用程序非常方便,以Node.js搭建的高效服务器的出现使开发人员可以使用JavaScript直接处理客户端请求,而Node.js具有事件驱动特性,异步I/O的模型,使得其搭建的服务器能最小化开销且最大化伸缩性[2],这使得实时Web应用程序的开发更加高效,简单和节能。

本文提出了一种新的解决方案,它将Node.js和WebSocket结合到完整的实时Web应用程序中,并将该解决方案应用于实例,从而验证该方案在理论和实践上研究该解决方案的可行性,总结出其与传统解决方案相比的优势。

WebSocket

在提出WebSocket之前,开发人员使用异步Ajax实现实时Web应用程序。最常用的Ajax技术是轮询和comet,使用这类技术客户端与服务器之间的交互是完整的http请求和响应,这增加了传输数据量,不可避免地增加了编程的复杂性。HTML5的WebSocket技术的目的是取代轮询和comet [3],如图1所示。

图1 轮询和WebSocket的网络负载比较

WebSocket在数据传输的稳定性和数据传输的大小方面具有显着的优势。

WebSocket使浏览器支持Socket成为可能,它提供了浏览器与服务器之间的全双工通信通道,因此客户端可以像C/S结构下的桌面系统那样与服务器进行实时通信。。

为了建立WebSocket连接,客户端发送WebSocket握手请求,服务器发送WebSocket握手响应[4]

客户端请求报文:

GET/demoHTTP/1.1
Host:example.com
Connection:Upgrade
Sec-WebSocket-Key2:129985Y31.P00Upgrade:WebSocket
Sec-WebSocket-Key1:4@146546xW%0l15Origin:http://example.com

[8字节安全密钥]服务端响应报文:

HTTP/1.1101WebSocketProtocolHandshakeUpgrade:WebSocket
Connection:Upgrade
WebSocket-Origin:http://example.comWebSocket-Location:ws://example.com/demo[16字节响应]

图2客户端和服务器连接的建立过程

WebSocket握手协议的过程与Http连接的建立过程类似,区别在于:当建立客户端与服务器之间的连接时,不需要再次建立连接,且服务器可以主动将信息推送到客户端,而无需重复客户端的轮询请求[5]

Node.Js

Node.js是一种服务器端语言,旨在编写可伸缩的Internet应用程序,尤其是Web服务器。Node.js具有事件驱动特性,异步I/O的模型,使得其搭建的服务器能最小化开销且最大化伸缩性[2]。Node.js包含一个内置的HTTP服务器库,从而可以在不使用其他拓展包的情况下建立且运行Web服务器。Node.js使Web开发人员能够使用JavaScript创建整个Web应用程序,包括服务器端和客户端。如图3所示。

图3 Node.js程序架构

Node.js使用GoogleV8 JavaScript引擎,libuv平台抽象层及其核心库进行打包编译,该库本身主要是用JavaScript编写的。因为缺少现有的I/O API,使node.js能够定义无阻塞,事件驱动的I/O的约定[6]。与大多数JavaScript程序不同,它不是在Web浏览器中执行,而是作为服务器端JavaScript应用程序执行。Node.js实现了一些Common JS规范[7]。它还为交互式测试提供了REPL环境。

在Node.js中,该函数封装在模块中,必须首先加载适当的模块才能使用这些功能,例如

var sys=require(“sys”)

架构

WebSocket可以通过单个TCP连接提供全双工通信通道,并可以在浏览器和网站之间进行更多的交互,并允许在保持连接打开的情况下来回传递消息。

我们可以使用WebSocket协议建立服务器连接,客户端具有HTML5 websocket API定义的四个事件:

bull;onopen:在建立连接后触发;

bull;onmessage:在收到消息后触发;

bull;onerror:在发生错误时触发;

bull;onclose:在关闭连接时触发。

不只是node.js,我们还可以通过php,java构建其他WebSocket服务器,用于构建WebSocket应用程序。

因为Node.js是一种固有的高效服务端语言,它包含一个内置的HTTP服务器库,从而我们可以在不使用其他拓展包的情况下运行Web服务器。如果服务器需要大量业务逻辑开发,我们也可以直接使用Node.js来处理请求。为了实现WebSocket协议,Node.js只需要实现websocket draft-76协议,它甚至提供了使mke编程更简单的api[8]

本文提出了一种基于Node.js和WebSocket的新的实时Web应用程序解决方案,以构建许多实时Web应用程序,例如实时游戏,股票交易,监控等。解决方案的框架如图4所示。

图4框架概述

实践

WebSocket可以通过单个TCP连接提供全双工通信通道,这使得构建实时Web应用程序更加容易。作为一种高效的服务器端语言,Node.js可以直接使用Javascript来处理来自因此,我们使用结合HTML5画布的新解决方案来构建一个实时的Web应用程序,例如“你画我猜”游戏,从实际的角度分析了该解决方案的可行性和优势。

实现该实时Web应用程序可以分为两部分:

bull;服务端

使用Node.js服务器实现数据管理和数据分发。当一个事件模型触发后,服务器会从客户端接收数据,然后在处理完数据后,服务器将数据分发给每个客户端。

bull;客户端

建立用户交互操作,并使用WebSocket实现数据的接收和发送,它包括3个主要功能:

bull;登录模块:验证用户名和密码的有效性

bull;聊天模块:聊天消息通过websocket发送到服务器进行处理,然后广播给每个客户。

bull;绘图模块:使用HTML5标准的Canvas控件创建画布,您可以可以选择笔的颜色,并擦除画布,将图形数据发送到服务器,服务器接收并处理图形数据,然后将数据分发给每个客户端。

结果

我们将新的实时Web应用程序解决方案与HTML5 Canvas元素结合起来应用到了“你画我猜”游戏中,并在服务器(Intel(R)C oretrade;2QuardCPU的速度为2.66Ghz,4GB RAM)上进行了实验,,结果如表1所示。

表1不同并发连接的平均响应时间

并发连接

每秒处理的请求数

平均响应时间(毫秒)

10

690.90

14.47

25

1587.43

15.75

50

2389.20

20.93

100

2961.82

33.76

200

3107.91

64.35

根据结果​​我们发现,结合了Node.js和WebSocket的新解决方案在创建轻松高性能实时应用程序方面具有显着优势,并且与传统方式相比更加快速简单,性能也非常高。

结论

随着Internet的飞速发展,实时Web应用越来越受到人们的关注,WebSocket协议的出现为构建简单高效的实时Web应用提供了一种新的途径。基于Node的应用程序解决方案。提出了js和WebSocket协议,并将该解决方案应用于实验,进一步分析了其可行性,并从理论和实践层面展示了其与传统解决方案相比的优势。随着Node.js和WebSocket协议的发展,基于Node.js和WebSocket的实时Web应用程序解决方案将得到更广泛的认可和接受。

参考文献

[1]Dtgriscom.WebSocket.http://en.wikipedia.org[G].2013.4.

[2]PaulVerest.Node.js.http://en.wikipedia.org[G].2013.5.

[3]XiaoZai-chang,YangWen-hui,LiuBing.Real-TimeTechnologyofWebBasedonWebSocket.Networkamp;Communication[j].2012.12,PP40-42.

[4]W3C.TheWebSocketAPI.http://dev.w3.org/html5/websockets/.2010

[5]ZHOUTing.Comet:LongServerPushTechnologyBasedonHTTP.http://www.ibm.com/developerworks/cn/Web/wa-lo-Comet/.2007

[6]GAOYuan.Server-sidejavascriptTechnology.Informationamp;Computer(TheoryEdition)[J].2012.1,PP78-80.

[7]WenZhao-song,YiRen-wei,YaoHan-bing.WebSocketBasedRealTimeWebApplicationSolution.Computeramp;Techology[J].2012.6,PP26-28.

[8]DavidHerron.NodeWebDevelop[M].peoplesPostsandTelecommunicationsPress,2012.4.

文献翻译:Real-time processing of spatial attribute information for mobile web based on standard web framework and HTML5

基于标准Web框架和HTML5的移动Web空间属性信息的实时处理

作者Kwangseob Kim1 bull; Kiwon Lee1

摘要

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[238767],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

课题毕业论文、文献综述、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。