0
点赞
收藏
分享

微信扫一扫

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_02

案例

下面将基于WebSocket 开发一个多人实时聊天的程序,该程序的思路很简单一一在这个程序中,每个客户所用的浏览器都与服务器建立一个WebSocket ,从而保持实时连接,这样客户端的浏览器可以随时把数据发送到服务器端:当服务器收到任何一个浏览器发送来的消息之后, 将该消息依次向每个客户端浏览器发送一遍。图2 .54 显示了基于WebSocket 的多人实时聊天示意图。

Java学习笔记一Tomcat 8.5 的WebSocket 支持_客户端_03


为了实现图2.54 所示的示意图,按如下步骤开发Web Socket 服务端程序即可。

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


Java学习笔记一Tomcat 8.5 的WebSocket 支持_服务端_05


Java学习笔记一Tomcat 8.5 的WebSocket 支持_服务端_06


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


上面程序中第一行粗体字代码创建了一个WebSocket 对象(WebSocket 是HTML 5 规范新增的类),创建对象时指定WebSocket 服务端的地址。一旦程序得到了WebSocket 对象, 接下来程序即可调用WebSocket 的send方法向服务器发送消息。除此之外, 还可以为WebS ocket 绑定如下三个事件处理函数。

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


该ChatEntpoint 类并不是真正的Web Socket 服务端,它只实现了Web Socket 服务端的核心功能, Tomcat 会调用它的方法作为WebSocket 服务端。因此, Tomcat 会为每个We bSocket 客户端创建一个ChatEntpoint 对象,也就是说,有一个Web Socket 客户端,程序就有一个ChatEntpoint 对象。所以上面程序中clientSet 集合保存了多个ChatEntpoint 对象,其中每个ChatEndpoint 对象对应一个WebSocket 客户端。

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


Java学习笔记一Tomcat 8.5 的WebSocket 支持_客户端_10


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

WebSocket协议入门:WebSocket 协议

WebSocket协议入门:WebSocket API


举报

相关推荐

0 条评论