本书是关于HTML5 WebSocket的权威指南。本书包含了Web开发人员和架构师需要了解的WebSocket的一切。它讨论了基于WebSocket的架构师如何相对于旧的HTTP(Ajax)减少不必要的网络开销和延迟层,相比,XMPP和STOMP的WebSocket上,如何WebSocket,上对广泛使用的协议(比如 XMPP 和STOMP )进行分层,如何保护WebSocket链接和在企业部署基于 WebSocket 的应用。本书主要内容包括: WebSocket API和协议,WebSocket协议通信的例子,WebSocket的安全性和企业部署, 内置即时通讯和聊天应用程序的WebSocket与XMPP(可扩展消息处理现场协议),通过WebSocket的STOMP(面向简单的文本消息协议)实现发布/订阅消息传递协议,VNC带远程帧缓冲协议。本书针对想要使用WebSocket构建前沿Web应用程序的Web开发人员和架构师。
前勒口
作者简介
Vanessa Wang?HTML5领域的布道者和实践者,热衷于HTML5和WebSocket的研究,是旧金山HTML5用户组的联合组织者,负责组织HTML5和相关技术的社区活动。Vanessa目前是Kaazing公司的技术出版经理,15年来一直坚持撰写技术文章。Kaazing是一家软件公司,旨在使用新的WebSocket标准改进企业和客户通过Web通信的方式。写作之余,她喜欢打跆拳道、骑自行车和拉大提琴。
Frank Salim?Google公司资深软件工程师,拥有Pomona学院的计算机科学学位。曾经是Kaazing公司最早的工程师之一,协助建立了WebSocket网关和客户端策略。2010年,Frank与人合著了《Pro HTML5 Programming》(Apress)一书。编程之余,他喜欢阅读、绘画和单排轮滑。
Peter Moskovits?Kaazing公司实时解决方案负责人。Peter与架构师和开发人员社区紧密协作,构建和部署最好的Web解决方案。在加入Kaazing之前,Peter担任过多种产品的管理工作,并曾经负责Oracle的门户产品策略。Peter经常在会议和业界活动上发表演讲,包括GoTo、YOW!、JavaOne、Oracle OpenWorld、HTML5DeConf、DevCon5和各种用户组会议。他还是《Oracle WebCenter 11g Handbook》的合著者。
封面
WebSocket领域最全面和系统的著作,三位资深HTML5技术专家共同撰写
系统讲解WebSocket 的API、协议、消息传递、安全性和企业部署,并给出通过WebSocket协议通信的真实示例,可操作性强
封底
WebSocket是一种自然的全双工、双向、单套接字连接,是HTML5平台的关键组件。借助这种革命性的新型Web技术,你可以充分利用实时连接的威力,构建响应式的现代Web应用程序。
本书是一份优秀的WebSocket学习指南,包含了Web开发人员和架构师必知必会的所有WebSocket知识。书中首先讨论了与旧的HTTP架构(如AJAX)相比,基于WebSocket的架构是如何显著减少不必要的网络开销和延迟的,然后介绍了如何在WebSocket基础上添加广泛使用的协议(如XMPP和STOMP)层次,如何加强WebSocket连接安全性,以及如何在企业中部署基于WebSocket的应用。通过完成书中实用的示例,你将学到构建即时消息传递和聊天应用程序、用WebSocket扩展VNC以及确保企业WebSocket架构安全的方法。
本书主要内容包括:
介绍WebSocket API和协议;
描述并提供通过WebSocket协议通信的真实示例;
阐述WebSocket安全性和企业部署。
程序设计/Web开发
WebSocket是一种自然的全双工、双向、单套接字连接,是HTML5平台的关键组件。借助这种革命性的新型Web技术,你可以充分利用实时连接的威力,构建响应式的现代Web应用程序。
本书是一份优秀的WebSocket学习指南,包含了Web开发人员和架构师必知必会的所有WebSocket知识。书中首先讨论了与旧的HTTP架构(如AJAX)相比,基于WebSocket的架构是如何显著减少不必要的网络开销和延迟的,然后介绍了如何在WebSocket基础上添加广泛使用的协议(如XMPP和STOMP)层次,如何加强WebSocket连接安全性,以及如何在企业中部署基于WebSocket的应用。通过完成书中实用的示例,你将学到构建即时消息传递和聊天应用程序、用WebSocket扩展VNC以及确保企业WebSocket架构安全的方法。
本书主要内容包括:
·介绍WebSocket API和协议;
·描述并提供通过WebSocket协议通信的真实示例;
·阐述WebSocket安全性和企业部署。
(美)Vanessa Wang, Frank Salim, Peter Moskovits著:Vanessa Wang HTML 5领域的布道者和实践者,热衷于HTML5和WebSocket的研究,是旧金山HTML 5用户组的联合组织者,负责组织HTML5和相关技术的社区活动。Vanessa目前是Kaazing公司的技术出版经理,15年来一直坚持撰写技术文章。Kaazing是一家软件公司,旨在使用新的WebSocket标准改进企业和客户通过Web通信的方式。写作之余,她喜欢打跆拳道、骑自行车和拉大提琴。
Frank Salim Google公司资深软件工程师,拥有Pomona学院的计算机科学学位。曾经是Kaazing公司最早的工程师之一,协助建立了WebSocket网关和客户端策略。2010年,Frank与人合著了《Pro HTML5 Programming》(Apress)一书。编程之余,他喜欢阅读、绘画和单排轮滑。
Peter Moskovits Kaazing公司实时解决方案负责人。Peter与架构师和开发人员社区紧密协作,构建和部署最好的Web解决方案。在加入Kaazing之前,Peter担任过多种产品的管理工作,并曾经负责Oracle的门户产品策略。Peter经常在会议和业界活动上发表演讲,包括GoTo、YOW!、JavaOne、Oracle OpenWorld、HTML5DeConf、DevCon5和各种用户组会议。他还是《Oracle WebCenter 11g Handbook》的合著者。
姚军 等译:暂无简介
万维网极大地改变了人类获取信息的方式。当今世界,不管是办公室里埋头工作的人们,还是路上行色匆匆的芸芸众生,都无时无刻不在通过面前的电脑、平板电脑甚至手机乐此不疲地获取信息、处理业务,而仅仅在20年之前,人们还从未想过有这番景象。
需求决定市场,人们在Web技术上投入了巨大的精力,从最初各种动态网页的渲染技术、令人头痛的跨浏览器兼容问题,到更具有类似桌面应用程序灵敏性的AJAX等,不一而足。在经历了大量艰辛的尝试之后,标准也在不断地发展,所有开发者和设计者都意识到,只有标准支持的技术才具备强大的生命力,也才能够真正得到广泛应用。
万维网的核心—HTML也在不断地变化,从当初仅用于简单文档共享的超文本标记语言,发展到当今令人耳目一新,充实了更丰富语义的HTML5。但是,HTTP协议的局限性一直困扰着Web开发人员,阻碍他们开发媲美桌面应用程序的实时桌面应用程序,HTTP无状态、半双工的特性使得它在许多方面显得力不从心,而为此开发的Comet等技术也无法完全提供和桌面上基于TCP协议的Web应用程序类似的体验。
WebSocket的推出彻底扭转了这种局面,这种新技术基于标准、与语言无关,且能在其上灵活地增加标准协议层次,从而在HTTP架构中增加了一个全新的传输层。一经发布,Web开发人员对之无不争先恐后,了解这种技术也成了所有从事Web工作的开发人员、网络管理员的必修课。
本书用简单扼要的阐述、典型实用的例子,为读者提供了实施WebSocket技术所需要的主要基础知识,涵盖了对新旧HTTP架构的对比,在WebSocket上实施应用协议层次,WebSocket应用程序部署以及安全性等丰富内容。可以毫不夸张地说,对于初涉这一领域的读者来说,通读本书,除了掌握相关的知识之外,还会对WebSocket开发充满信心,并在将来的实践中喜欢上这门技术。
本书的翻译工作主要由姚军完成,徐锋、陈志勇、刘建林、白龙、宁懿等也为翻译工作作出了贡献。由于译者水平所限,书中难免出现一些错误,请广大读者多加批评指正,在此也感谢机械工业出版社华章分社的编辑们对翻译工作的大力支持。
姚军
译者序
作者简介
技术审校者简介
序
致谢
第1章 HTML5 WebSocket简介 / 1
1.1 HTML5是什么 / 2
1.2 HTML5连接性 / 3
1.3 旧的HTTP架构概览 / 5
1.3.1 HTTP 101(即HTTP/1.0和HTTP/1.1) / 5
1.3.2 绕道而行:HTTP轮询、长轮询和流化 / 7
1.4 WebSocket入门 / 9
1.5 为什么需要WebSocket / 10
1.5.1 WebSocket与性能相关 / 10
1.5.2 WebSocket与简洁性相关 / 10
1.5.3 WebSocket与标准相关 / 10
1.5.4 WebSocket与HTML5相关 / 11
1.5.5 你需要WebSocket / 11
1.6 WebSocket和RFC 6455 / 11
1.7 WebSocket的世界 / 12
1.8 WebSocket的选择 / 12
1.8.1 非常活跃的WebSocket社区 / 12
1.8.2 WebSocket应用程序 / 13
1.9 相关技术 / 13
1.9.1 服务器发送事件 / 14
1.9.2 SPDY / 14
1.9.3 Web实时通信 / 15
1.10 小结 / 15
第2章 WebSocket API / 16
2.1 WebSocket API概览 / 17
2.2 WebSocket API入门 / 18
2.2.1 WebSocket 构造函数 / 18
2.2.2 WebSocket事件 / 21
2.2.3 WebSocket方法 / 25
2.2.4 WebSocket对象特性 / 27
2.3 全部组合起来 / 29
2.4 检查WebSocket支持 / 32
2.5 在WebSocket中使用HTML5媒体 / 33
2.6 小结 / 37
第3章 WebSocket协议 / 38
3.1 WebSocket协议之前 / 39
3.1.1 互联网简史 / 40
3.1.2 Web和HTTP / 40
3.2 WebSocket协议简介 / 42
3.2.1 WebSocket:Web应用程序的互联网能力 / 43
3.2.2 检查WebSocket流量 / 45
3.3 WebSocket协议 / 46
3.3.1 WebSocket初始握手 / 47
3.3.2 计算响应键值 / 48
3.3.3 消息格式 / 49
3.3.4 WebSocket关闭握手 / 52
3.3.5 对其他协议的支持 / 54
3.3.6 扩展 / 55
3.4 用Node.js编写JavaScript WebSocket服务器 / 56
3.4.1 构建简单的WebSocket服务器 / 57
3.4.2 测试简单的WebSocket服务器 / 61
3.4.3 构建远程JavaScript控制台 / 62
3.4.4 扩展建议 / 65
3.5 小结 / 65
第4章 用XMPP构建WebSocket上的即时消息和聊天 / 66
4.1 分层协议 / 67
4.2 XMPP:XML的流化 / 69
4.2.1 标准化 / 70
4.2.2 选择连接性策略 / 70
4.2.3 联盟 / 73
4.3 通过WebSocket构建聊天和即时消息应用程序 / 73
4.3.1 使用能够处理WebSocket的XMPP服务器 / 73
4.3.2 建立测试用户 / 74
4.3.3 客户端程序库:Strophe.js / 74
4.3.4 连接并开始工作 / 75
4.3.5 在线状态 / 77
4.3.6 交换聊天消息 / 82
4.3.7 ping和pong / 85
4.3.8 完整的聊天应用程序 / 86
4.4 建议的扩展 / 88
4.4.1 构建用户界面 / 88
4.4.2 使用XMPP扩展 / 89
4.4.3 连接到Google Talk / 89
4.5 小结 / 89
第5章 用STOMP通过WebSocket传递消息 / 90
5.1 发布/订阅模式概览 / 92
5.2 STOMP简介 / 94
5.3 Web消息传递入门 / 95
5.3.1 安装消息代理 / 96
5.3.2 在实践中了解STOMP概念 / 99
5.4 构建STOMP/WS应用程序 / 101
5.4.1 游戏流程 / 101
5.4.2 创建游戏 / 103
5.4.3 监控Apache ActiveMQ / 111
5.5 建议的扩展 / 112
5.6 Web消息传递的未来 / 113
5.7 小结 / 114
第6章 用远程帧缓冲协议实现VNC / 115
6.1 VNC概述 / 117
6.1.1 远程帧缓冲协议概述 / 119
6.1.2 面向二进制和面向文本的协议 / 120
6.1.3 选择使用RFB over WebSocket / 120
6.2 构建WebSocket上的VNC客户端 / 121
6.2.1 建立代理服务器 / 122
6.2.2 RFB客户端 / 124
6.2.3 使用HTML5的