WebSocket学习记录(二) | 青训营笔记

88 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第五天

写在前面

在写大项目时,有个需求需要服务端和客户端的持久化通信,需要服务端主动请求客户端,因此我去学习webSocket。这一篇是上一篇的延续,用来记录学习过程中的webSocket的使用的一些学习记录


客户端实现

  • 创建webSocket对象

    var ws = new webSocket(url);
    //url格式说明:ws://ip地址:端口号/资源名称
    
  • webSocket事件

    事件事件处理程序描述
    openwebsocket对象.onopen创立连接时触发
    messagewebsocket对象.onmessage客户端接收到服务端的数据时触发
    errorwebsocket对象.onerror通信发生错误时触发
    closewebsocket对象.onclose连接关闭时触发
  • webSocket方法

    方法描述
    send()使用连接向服务器发送数据

服务端实现

  • 基于Java WebSocket规范,其由一系列的WebSocketEndpoint组成。Endpoint是一个java对象,代表WebSocket链接的一端,对于服务端,可视为处理具体WebSocket消息的接口,就像Servlet与http请求一样

  • 实现方式

    • 编程式:继承类Endpoint并实现其方法
    • 注解式:定义一个POJO,并添加@ServerEndpoint相关注解
  • 相关生命周期方法

    方法描述注解
    onClose关闭会话@OnClose
    onOpen开启新会话,在服务端与客户端握手成功后调用@OnOpen
    onError连接过程中异常时调用@OnError
    onMessage接收客户端发送过来的消息@OnMessage
  • 服务端接收数据

    • 为Session添加MessageHandler(消息处理器)来接收数据
    • 若采用注解开发,也可使用@OnMessage来指定接收消息的方法
  • 服务端推送数据

    • 由RemoteEndpoint完成,其实例由Session维护
      • Session.getBasicRemote:获取同步消息发送的实例
      • Session.getAsyncRemote:获取异步消息发送的实例
      • sendXxx( ):实例用于发送消息的方法

写在最后

以上便是我的一些学习笔记,若有不足,欢迎指出