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