猜测Tomcat如何实现WebSocket协议

一、WebSocket协议的实现
(一)WebSocket是官方的协议接口标准。

(二)如果一门编程语言可以网络连接和并发,就能创建一种WebSocket实现。

(三)同一种编程语言,有不同的协议实现版本和框架。


二、Tomcat实现
在Tomcat容器中实现了对应的WebSocket版本,比较难使用。

(一)需要实现官方接口的实现类。
1、实现javax.websocket.Session接口,实现里面的抽象方法。
需要在子类中定义java.net.Socket类型的成员变量来和客户端通信,读取和接收数据。

2、Tomcat需要用java.net.ServerSocket监听端口,获取来自客户端的连接。
需要用输入输出流来接收和发送二进制数据。
需要判断是否为WebSocket请求,只有满足要求才能调用程序处理。


(二)需要用反射来加载用@ServerEndpoint修饰的类,生成对象。

这些类是用户开发的Websocket通信程序,代表着用户设计的通信逻辑。


(三)每次获得连接需要验证和握手,握手通过后创建和java.net.Socket类的对象相关的会话对象。

该会话对象是javax.websocket.Seesion接口的子类实例。


(四)每次需要根据接收的数据单位,调用事件处理方法,传入接收的数据和参数。

从用户设计的程序中得到监听对象,根据对应注解(例如@OnOpen)来获取方法对象,得到方法参数列表,根据列表来准备参数,调用方法。

1、第一次连接验证通过后,调用@OnOpen修饰的方法。

2、当读取到来自客户端的数据时,需要根据@OnMessage修饰的方法来调用,把数据传递。

3、当读取到是关闭数据包,调用@OnClose修饰的方法。

4、当在数据读取和发送中出现错误,调用@OnError修饰的方法,把错误对象传递该方法。

相关推荐

  1. 猜测Tomcat如何实现WebSocket协议

    2024-06-17 16:04:03       23 阅读
  2. WebSocket 协议的原理和实践

    2024-06-17 16:04:03       71 阅读
  3. 深入理解WebSocket协议实现实时通信的利器

    2024-06-17 16:04:03       52 阅读
  4. 如何在Django中实现WebSocket通信

    2024-06-17 16:04:03       54 阅读
  5. Jtti:如何实现tomcat自动化部署

    2024-06-17 16:04:03       54 阅读
  6. ASP.NET Core 中使用 WebSocket 协议进行实时通信

    2024-06-17 16:04:03       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-17 16:04:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-17 16:04:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-17 16:04:03       82 阅读
  4. Python语言-面向对象

    2024-06-17 16:04:03       91 阅读

热门阅读

  1. 等保测评练习卷3

    2024-06-17 16:04:03       22 阅读
  2. 行列视报表重算对历史报表都是有哪些影响?

    2024-06-17 16:04:03       27 阅读
  3. 新视野大学英语2 词组 6.17

    2024-06-17 16:04:03       26 阅读
  4. LeetCode 1731, 151, 148

    2024-06-17 16:04:03       27 阅读
  5. 软件回归测试:策略及案例分析

    2024-06-17 16:04:03       32 阅读
  6. 19.channel相关方法

    2024-06-17 16:04:03       32 阅读
  7. 考Oracle OCM 的作用

    2024-06-17 16:04:03       27 阅读
  8. 1节18650锂电池的容量是多大,电流,电压是多大

    2024-06-17 16:04:03       29 阅读
  9. oracle跨版本exdp 从高版本到低版本 从18c到10g

    2024-06-17 16:04:03       33 阅读
  10. 小抄 20240611

    2024-06-17 16:04:03       26 阅读