论文部分内容阅读
随着HTML5的发展,Web前端技术功能日益强大,过去只能由本地应用程序才能完成的一些功能,目前在Web前端上也可以完成,所以HTML5在这个时候受到了研究界的重视。利用即将成为W3C标准的HTML5技术,可以在浏览器端实现富客户端应用。本课题的研究内容就是实现HTML5中浏览器双向连接的服务端。目前,由于W3C对HTML5的WebSocket尚未标准化,实现HTML5双向连接WebSocket的服务端均与服务端容器本身有很强的耦合,且实现方式和应用程序接口各不相同。本文的主要工作成果就是将HTML5双向连接WebSocket服务端程序与服务端容器分离开,建立一个通用的服务端,增强应用的可移植性。首先,本文介绍了网络通信中常用到的技术,包括多线程技术、输入输出流技术等,并在此基础上,借助于Reactor设计模式和观察者设计模式,对常见的网络输入输出模型做了部分改进,降低了在多用户同时连接时,CPU上下文切换的次数。其次,利用改进的输入输出模型,实现浏览器双向连接的服务端,连接的握手过程可以根据WHATWG组织的文档完成。由于使用纯Java语言开发,生成的jar包可以放到任意一个服务端容器中,并开始工作,解决了WebSocket功能和容器本身的耦合。同时,可以自己定义自己的WebSocket接口,方便以后的服务端移植。再次,设计了两个应用案例。第一个案例是服务端文件传输,用于验证改进的网络输入输出模型对CPU上下文切换的影响。第二个案例是一个网络PPT播放功能,使用WebSocket实现,用于验证WebSocket服务端是否可以与其他服务端容器结合使用,同时也可以验证WebSocket实现富客户端的优势。最后,对本文的案例的测试结果进行分析,根据采集的到的数据,说明了改进的输入输出模型一定程度上降低了CPU的上下文切换次数,WebSocket服务端放入其他服务端容器里,也可以正常工作,同时降低了通信延迟和发送的数据量。