当前位置: 首页 > 网络应用技术

使用Netty构建Websocket客户端

时间:2023-03-08 15:34:02 网络应用技术

  在快速互联网速度的时代,浏览器已成为我们访问各种服务的入口。很难想象如果我们离开浏览器,我们的在线世界应该如何运作。现在我迫不及待地想将操作系统放在浏览器上。例如,服务器和服务器之间的通信需要使用自行构建的客户端与服务器进行交互。

  本文将介绍使用Netty客户端连接Websocket的原理和具体实现。

  在介绍Netty客户端之前,让我们看看一个简单的浏览器客户端连接WebSocket的示例:

  这是浏览器中最常见的JavaScript,并使用浏览器提供的Websocket API进行操作,这很简单。

  因此,使用Netty客户端的Websocket连接与JavaScript相同吗?让我们一起探索。

  首先查看Websocket支持的哪些支持类别,然后我们可以看到如何专门使用这些工具。

  像WebSocket Server一样,客户端中的核心类是Handshaker,称为WebSocketClientHandshaker。此类的角色是什么?让我们来看。

  此类主要由客户端和服务器实现。

  让我们看一下其最长参数的构造函数:

  参数中有URI连接到Websocket连接,例如:“ ws://flydean.com/mypath”。

  有一个带有请求子协议的类型子协议,自定义HTTP标头:自定义台面,最大的帧有效负载的长度:MaxFramePayloadlength,有强制性超时的时间以及使用HTTP协议升级的URI地址。

  如何创建手牌?同样,Netty提供了WebSocketClientHandshakerFactory方法。

  WebSocketClientHandShakerFactory提供了一种NewhandShaker方法,可以轻松创建各种不同版本的握手:

  可以看出,根据in -law版本的不同版本,它可以分为WebSocketClientHandShaker13,WebSocketClientHandshaker08,WebSocketClientHandshaker07,WebSocketClientHandshaker07。

  一般来说,对于Websocket协议,为了提高传输的性能和速度并减少网络带宽的量,通常会在使用过程中带来其他压缩扩展。要处理这种压缩扩展,Netty还提供服务器和服务器的支持客户。

  对于服务器端,相应的处理程序称为WebSocketServerCompressionHandler。对于客户端,相应的处理程序称为WebSocketClientCompressionHandler。

  通过将这两个处理程序添加到相应的管道中,它可以实现对Websocket中压缩协议扩展的支持。

  协议扩展的两个级别,它们分别对应于PersesgeDeclientedXtensionHandshaker和DeflateFramentedExensIdShaker。

  至于如何压缩,这里没有详细解释。有兴趣的朋友可以理解自己。

  在解释了Netty对Websocket客户端的支持之后,本节将解释Netty如何使用这些工具进行消息处理。

  首先是根据普通逻辑创建客户端的引导程序,并添加处理程序。此处的处理程序是为WebSocket定制的客户端处理程序。

  除了上面提到的WebSocketClientCompressionHandler外,它还是一个自定义处理程序。

  在自定义处理程序中,我们需要处理两件事。一件事是在频道准备就绪时创建手牌。另一个事情是处理特定的Websocket消息。

  首先使用WebSocketClientHandshakerFactory创建处理程序:

  然后使用握手在频道活动时握手以握手:

  然后,在收到消息时,您需要确定握手的状态是否已完成。如果尚未完成,请致电手册完成手册方法:

  握手完成后,可以执行普通的Websocket消息。

  Websocket的消息处理相对简单,并且接收到的消息将转换为用于处理的WebSocketFrame。

  本文解释了Netty提供的Websocket客户端的支持和特定对接过程。您可以再次扩展它以实现您的业务逻辑。

  本文的示例可以参考:Learn-netty4

  最受欢迎的解释,最深的干货,最简单的教程,您不知道的许多技巧正在等待您发现!

  欢迎注意我的公共帐户:“程序的事情”,了解技术并更好地了解您!