Java学习笔记一Tomcat 8.5 的WebSocket 支持

只要服务器端有了新数据,服务端就可以直接将数据推送给浏览器,让浏览器显示最新的状态。WebSocket 规范己经相当成熟,而且各种主流浏览器(如Firefox 、Chrome 、Safari 、Opera 等)都己经支持Web Socket 技术, Java EE 规范则提供了Web Socket 服务端规范,而Tomcat 8.5 则对该规范提供了优秀的实现。使用Tomca t 8.5 开发Web Socket 服务端非常简单,大致有如下两种方式。
Java学习笔记一Tomcat 8.5 的WebSocket 支持
开发被@ServerEndpoint 修饰的Java 类之后,该类中还可以定义如下方法。
Java学习笔记一Tomcat 8.5 的WebSocket 支持

案例

下面将基于WebSocket 开发一个多人实时聊天的程序,该程序的思路很简单一一在这个程序中,每个客户所用的浏览器都与服务器建立一个WebSocket ,从而保持实时连接,这样客户端的浏览器可以随时把数据发送到服务器端:当服务器收到任何一个浏览器发送来的消息之后, 将该消息依次向每个客户端浏览器发送一遍。图2 .54 显示了基于WebSocket 的多人实时聊天示意图。
Java学习笔记一Tomcat 8.5 的WebSocket 支持
为了实现图2.54 所示的示意图,按如下步骤开发Web Socket 服务端程序即可。
Java学习笔记一Tomcat 8.5 的WebSocket 支持
Java学习笔记一Tomcat 8.5 的WebSocket 支持
Java学习笔记一Tomcat 8.5 的WebSocket 支持
Java学习笔记一Tomcat 8.5 的WebSocket 支持
上面程序中第一行粗体字代码创建了一个WebSocket 对象(WebSocket 是HTML 5 规范新增的类),创建对象时指定WebSocket 服务端的地址。一旦程序得到了WebSocket 对象, 接下来程序即可调用WebSocket 的send方法向服务器发送消息。除此之外, 还可以为WebS ocket 绑定如下三个事件处理函数。
Java学习笔记一Tomcat 8.5 的WebSocket 支持
该ChatEntpoint 类并不是真正的Web Socket 服务端,它只实现了Web Socket 服务端的核心功能, Tomcat 会调用它的方法作为WebSocket 服务端。因此, Tomcat 会为每个We bSocket 客户端创建一个ChatEntpoint 对象,也就是说,有一个Web Socket 客户端,程序就有一个ChatEntpoint 对象。所以上面程序中clientSet 集合保存了多个ChatEntpoint 对象,其中每个ChatEndpoint 对象对应一个WebSocket 客户端。
Java学习笔记一Tomcat 8.5 的WebSocket 支持
Java学习笔记一Tomcat 8.5 的WebSocket 支持
Java学习笔记一Tomcat 8.5 的WebSocket 支持

WebSocket协议入门:WebSocket 协议
WebSocket协议入门:WebSocket API