Java WebSocket生命周期

本章将讲述WebSocket端点的生命周期。WebSocket端点的生命周期为开发人员提供了一个框架来管理端点所须要的资源,也提供了一个框架来拦截消息。咱们将仔细探讨其生命周期的顺序和语义,以及Java WebSocket API如何提供API和注解来支持处理这些事件。java

1、WebSocket协议node

    与基于HTTP的技术不一样,WebSocket具备生命周期。今生命周期周期由WebSocket协议支撑。WebSocket协议定义了客户端和服务器长时间存活的专用的TCP链接,一旦链接已经创建,数据的传输就能够往返传输。WebSocket协议中包含两种主要类型的帧:控制帧和数据帧。控制帧是用于执行协议的一些内部逻辑的数据传输。例如关闭帧(意味着发送者准备关闭链接)、Ping帧(检查WebSocket对等节点的链接的健康性)。Pong帧(对Ping帧作出回应)。数据帧定义了携带应用数据的WebSocket传输的种类。数据帧分为两类:文本型和二进制型(例如,图像数据)。编程

2、WebSocket生命周期服务器

    全部Java WebSocket端点生命周期的第一个事件是打开通知,它用来指示到WebSocket会话另外一端的链接已经创建。一旦打开通知被WebSocket对话的两端都接收到,参与的任意WebSocket后续就能够发送消息了。在WebSocket对话期间,可能会出现一些消息传递的错误。接受消息的WebSocket端点自己就可能产生错误,或者WebSocket实现自己在某些状况下也会产生错误。要注意对错误的处理。无论在WebSocket对话的哪一端准备结束对话,他均可以初始化关闭事件。下面从Java组件的视角来看看其生命周期如何呈现。框架

  • 打开事件:@OnOpen 此事件发生在端点上创建新链接时而且在任何其余事件发生以前异步

  • 消息事件:@OnMessage 此事件接收WebSocket对话中另外一端发送的消息。spa

  • 错误事件:@OnError 此事件在WebSocket链接或者端点发生错误时产生code

  • 关闭事件:@OnClose 此事件表示WebSocket端点的链接目前部分地关闭,它能够由参与链接的任意一个端点发出对象

    你可能已经注意到,我用注解式来讲明端点事件处理,这正是WebSocket所推荐的。虽然,你也能够用继承式来编程这些事件继承

  1.     @OnOpen 指示当此端点创建新的链接时调用此方法。此事件伴随着三部分信息:WebSocket Session对象,用于表示已经创建好的链接;配置对象(EndpointConfig的实例),包含了用来配置端点的信息;一组路径参数,用于打开阶段握手时WebSocket端点入站匹配URI。@OnOpen注解的方法是没有任何返回值的公有方法,这些方法有一个可选的Session参数、一个可选的EndpointConfig参数,以及任意数量的被@PathParam注解的String参数。

  2. @OnMessage 处理入站的消息。java培训机构里面是这样讲解的,链接上的消息将以3种基本形式抵达:文本消息、二进制消息或者Pong消息。最基本的形式是选择使用带String参数的方法来处理文本消息;使用ByteBuffer或者是byte[]参数的方法来处理二进制文本;若你的消息仅仅是处理Pong消息,则可使用Java WebSocket API中的PongMessage接口的一个实例。固然可使用一个boolean型参数表示对到来的消息进行分片。当boolean型参数值为false时,表示后续还有整个文本消息序列中的更多消息分片的到来,当设置为true时,表示当前消息是消息分片中最后一个分片。消息的处理还有不少选项,好比使用JavaI/O,甚至可让WebSocket实现把入站消息转换成本身选择的对象。这个将在消息通讯基础中提到,WebSocket应用通常是异步的双向消息。所以经过@OnMessage注解的此类方法上有一个额外选项:方法能够有返回值或者返回为空。当使用@OnMessage注解的方法有返回类型时,WebSocket实现当即将返回值做为消息返回给刚刚在方法中处理的消息的发送者。

  3. @OnError 能够处理WebSocket实现处理入站消息时发生的任何异常。处理入站消息时,可能会发生3中基本的错误类型。首先,WebSocket实现产生的错误可能会发生,这些异常属于SessionException类型,其次,错误可能会发生在当WebSocket实现试图将入站消息解码成开发人员所须要的对象时。此类错误都是DecodeException类型。最后是由WebSocket端点的其余方法产生的运行时错误。WebSocket实现将记录WebSocket端点操做过程当中产生的任何异常。

  4. @OnClose 它对于在WebSocket链接关闭时作其余的通用清理工做。@OnClose 能够用来注解多种不一样类型的方法来关闭事件。

相关文章
相关标签/搜索