发表于2024-12-27
Java WebSocket编程 开发、部署和保护动态Web应用 pdf epub mobi txt 电子书 下载
精通Java WebSocket应用开发,充分利用先进的通信技术构建动态企业级Web应用。《Java WebSocket编程 开发、部署和保护动态Web应用》一书由Java WebSocket编程专家撰写,提供了实际的开发策略和详尽的示例应用。本书诠释了如何设计客户端/服务器应用、与全双工消息通信协作、建立连接、创建端点、处理路径映射以及保护数据。你也将学到如何加密Web传输并且使用Java WebSocket增强既有应用。
主要内容
● 使用Java WebSocket API开发Web应用
● 创建和发布注解式端点和编程式端点
● 管理WebSocket端点的生命周期事件
● 维护端点生命周期中可靠的连接
● 管理同步和异步消息通信
● 为复杂消息通信定义编码和解码策略
● 配置消息通信超时、大小限制和异常
● 消息路径映射及将入站URI路由到Web容器
● 保护数据、认证用户以及加密连接
Danny Coward是Oracle的首席架构师和Web架构师。他是Java EE、Java SE/JavaFX中WebSocket Java API的规范领导者。他在Oracle主导WebSocket工作,他是Java WebSocket编程方面的权威专家。
目 录
第1章 Java WebSocket基本原理 1
1.1 创建第一个WebSocket应用 2
1.1.1 创建WebSocket端点 3
1.1.2 部署端点 5
1.1.3 创建WebSocket客户端 6
1.2 WebSocket端点 9
1.3 编程式端点 10
1.4 深入Echo示例 17
1.4.1 部署阶段 17
1.4.2 接收第一个连接 19
1.4.3 WebSocket消息通信 22
1.5 本章小结 23
第2章 Java WebSocket生命周期 25
2.1 WebSocket协议 26
2.2 Java WebSocket生命周期 27
2.3 Java WebSocket API中的WebSocket生命周期 29
2.3.1 注解式端点事件处理 30
2.3.2 Lifecycle示例 38
2.3.3 编程式端点生命周期 46
2.3.4 实例数目及线程机制 49
2.4 本章小结 51
第3章 消息通信基础 53
3.1 消息通信概述 54
3.1.1 发送消息 54
3.1.2 接收WebSocket消息 61
3.2 DrawingBoard应用 73
3.3 消息通信和线程 94
3.3.1 WebSocket端点线程和消息通信 94
3.3.2 线程与编码器和解码器的生命周期 95
3.4 本章小结 95
第4章 配置与Session 97
4.1 Session状态和逻辑端点状态 98
4.2 Chat示例 99
4.3 配置端点:ClientEndpointConfig和
ServerEndpointConfig 111
4.3.1 提供和访问端点配置信息 111
4.3.2 配置选项介绍 113
4.3.3 WebSocket子协议和WebSocket扩展 115
4.4 WebSocket Session 123
4.5 本章小结 128
第5章 高级消息处理 129
5.1 检查连接:Ping和Pong 130
5.2 异步发送WebSocket消息 132
5.2.1 通过Future发送WebSocket消息 133
5.2.2 通过Handler发送WebSocket消息 135
5.2.3 何时通过Future发送以及何时通过Handler发送 136
5.2.4 异步发送超时 137
5.3 消息批处理 138
5.4 缓冲、消息分片和数据帧 140
5.5 保证消息传递 142
5.6 发送消息API总结 143
5.7 MessageModes应用 144
5.7.1 MessageModes应用概述 145
5.7.2 查看MessageModes应用的代码 147
5.7.3 MessageModes应用中需要注意的事情 155
5.8 本章小结 158
第6章 WebSocket路径映射 159
6.1 URI术语 160
6.2 WebSocket路径映射 161
6.2.1 精确URI映射 161
6.2.2 URI模板路径 164
6.2.3 URI模板匹配相关的API 167
6.2.4 在运行时访问路径信息 173
6.2.5 查询字符串和请求参数 174
6.2.6 匹配优先级 177
6.3 Portfolio应用 180
6.4 查询字符串、路径参数与WebSocket消息 186
6.5 WebSocket路径映射API总结 188
6.6 本章小结 189
第7章 保护WebSocket服务器端点 191
7.1 安全的概念 192
7.2 Java WebSocket API安全 193
7.2.1 认证 194
7.2.2 授权 199
7.2.3 私有通信 204
7.2.4 Java WebSocket安全API 207
7.3 Stock Account应用 209
7.4 本章小结 217
第8章 Java EE平台中的WebSocket 219
8.1 Java EE平台中Java WebSocket的角色 220
8.2 共享Web应用状态 222
8.2.1 HttpSession与WebSocket Session的关联 224
8.2.2 HttpSession示例 225
8.3 WebSocket端点使用EJB 230
8.4 新版Chat示例 235
8.5 本章小结 240
前 言
对于Web开发人员迅速发展的工具箱而言,WebSocket协议是一种新的网络协议。它除了作为HTML 5的核心技术外,还被从桌面到平板电脑和智能手机的所有主流浏览器迅速采用,不过为什么Web开发人员还要关心另一种网络技术?
长轮询
在2000年之前,全世界的多数主流公司都使用Web。在发展中国家,个人电脑的革命使得大部分家庭都至少通过一个通道接入互联网。企业迅速地在互联网上建立其Web站点,作为一种展示产品和服务的手段,并且作为交付这些产品和服务的一个日益增长的渠道。Web的基本技术(例如HTTP、HTML和JavaScript)推动了人们如何与其他人、其学校和其工作地点交互,如何规划假期,甚至如何购买生活用品的革命。
Web网站从静态和无趣的目录式风格不断发展,开发人员找到了新方法使得Web网站更加具有交互性。他们指望在合适的时候通过为浏览者注入有趣的信息并在必要时对页面中的信息进行更新来为Web网站添加活力。然而开发人员发现,基本的HTTP及其标记式技术存在着限制。开发人员需要更新股票报价、最新出价、登录到同一网站的当前好友列表、新的处理价以及游戏结果。同时他们也需要在不依赖用户的持续交互的情况下完成这些事情。他们需要从Web服务器端发起数据更新,保持Web网站更新、更迷人、更有趣。他们需要Web网站访问者转变为其渠道的一个观察者,并且他们需要访问者为了获取推送给他们的信息做尽可能少的事情。
在之后的几年中,开发人员通过各种非正规手段来完成更新一个网站最新的各种类型的信息到所有当前访问者的任务。最明显的手段是通过浏览器向服务器轮询更新。开发人员将一小段JavaScript嵌入相关的Web页面中,强迫浏览器以预定的间隔周期刷新整个页面。无论获取的数据是否需要刷新,此方法都将刷新所有的数据。即使除去获取非必需数据之外,此方法的网络延迟也是比较明显的,所以其用户体验比较糟糕。
稍微复杂一些的处理方式是使用HTTP Keep Alive机制。在这种机制中,Web页面中的JavaScript代码将保持打开一个长生命周期的HTTP连接,如同一个持续不断的软件下载,它将定期地使用新信息进行更新。关于浏览器和服务器应保持连接打开多久方面的巨大差异导致了大量问题。一般情况下,客户端的浏览器将需要频繁地重新打开连接,而无论其是否从服务器获取数据。
随着开发人员接触这些技术,开发框架(例如Comet和AJAX)逐步开始支持并包含这些基本技术。在某种程度上,它们可以隐藏这些基本技术的一些不足。然而,有两个基础问题即使是最好的实现也不能克服。首先,HTTP是一个发送简单信息的昂贵的网络协议。仅仅请求简单的股票报价更新,连接上下文在每次请求中都会被重新调用:例如限定客户端和服务器平台的所有头信息、认证属性、负载描述等。其次,更糟糕的是,无论服务器是否有新的信息传送,都需要建立昂贵的连接。
WebSocket的引入
2009年,WebSocket的引入工作始于一项允许客户端与服务器建立一个轻量级的连接,并允许双向通信和一个轻量级的内容模型的技术。服务器能够仅在必要时将数据推送到已连接的客户端。一旦连接建立后,在每次发送消息时无须重新创建连接上下文,客户端和服务器都将有办法发送简单信息。
不必要的更新的日子即将结束。
为了理解轮询方式如何浪费网络资源,考虑一个拍卖网站。物品可以发布在网站上,在定义的时间段内,用户可以对物品进行投标,在投标时间结束后,物品被卖给出价最高的用户。在拍卖的整个过程中,任意访问投标页面的用户都能够看到当前的出价并使用此信息来决定更高的出价。若网站提供一个极其令人满意的物品来拍卖(一个稍微使用过的iPod,毕竟它是2003年的产品),同时此物品的拍卖时间仅仅只有一个小时。假设当这个iPod有新的出价时,网站需要仅仅传送一个简短消息,包含新的价格以及可能的一些附加信息(例如,竞标者的线上名称)。我们估计这些信息总是符合64个字节。若考虑到所有已登录的用户,为了获取新的信息,一些Cookie信息需要在HTTP请求中传送。连同内容类型头、可能两三个特定于应用的头、内容长度、浏览器ID等一起,我们估计头信息大约为512字节。现在假设平均有100个用户登录到此网站,在拍卖过程中平均每30秒有一个新的出价。假设出价的频率并不是平均分布的;在某一时刻,出价也许相隔几秒钟(接近于拍卖时间的结束),而在平时(拍卖时间开始)出价可能相隔几分钟。竞标者将希望最近价格信息一直可用,所以他将谨慎地每两秒钟刷新一次价格;否则,因为在竞标者获取更新前另一个出价已完成,当出价不被通过时,竞标者会变得失意。下面将为了获取更新发送的所有数据进行合计:
平均每分钟30次更新,总计60分钟 = 1800次更新
每次更新带来大约512字节的头信息
发送和接收的头信息总计为:
1800 × 512字节 = 921 600字节 = 900KB
现在,若每次更新包含64字节。同时在此拍卖中,假设有120次出价。因此所有更新信息为:120 × 64字节 = 7.5KB。
因此,有用数据与重复数据的粗略的效率比计算是7.5 / 900 = 0.8%。
这并不是一个理想的分数,并且在更长时间的拍卖下,我们甚至不知道此效率比是如何降低的。
WebSocket旨在通过仅在建立连接时发送上下文信息,并且在连接建立后允许连接的两端在携带着极少的标识信息的上下文信息的情况下发送消息(即使是同时发送)来显著增加这种类型的网络效率。
这样,连接到Web服务器的Web页面能够仅在服务器决定它们需要更新时才接收更新。同时当发送此更新时,它不需要使用关于连接的大负载的上下文信息来使得消息的负荷太重。
WebSocket协议介绍
WebSocket协议是一个网络协议,允许两个相连的端在一个单一TCP连接上进行全双工消息通信。对WebSocket的一个合适的类比是打电话。当打电话时,你通过拨号初始化一个电话呼叫。如果 Java WebSocket编程 开发、部署和保护动态Web应用 电子书 下载 mobi epub pdf txt
受教了,果然很有意思,很有用。
评分多少字才够十个字我不知道
评分此用户未填写评价内容
评分创见(Transcend)64GB UHS-I 300X TF(Micro SD)
评分扩展学习,了解,扩大知识面
评分书不错,看起来!
评分学习下学习方法,不知道这本书咋样先看看吧
评分介绍的很详细,对自己的帮助很大。
评分送的很快,书不错,慢慢看吧
Java WebSocket编程 开发、部署和保护动态Web应用 pdf epub mobi txt 电子书 下载