websocket 发送多条消息如何判断全部接收_20分钟入门到实战WebSocket通信

本文介绍了WebSocket通信的基础知识,包括其优势、生命周期和建立连接的过程。通过Netty框架,详细讲解了如何配置服务端和客户端,实现WebSocket的实时通讯。最后,提供了简单的实战步骤,帮助读者快速上手。
摘要由CSDN通过智能技术生成

前言

目前市场最常用的WebSocket通信大多都是基于NIO的,并且更多的是基于Netty框架上进行信息交互实现的。先大致了解下NIO与Netty的知识点,然后快速进行服务端与客户端的WebSocket通讯实现。

Netty入门

原生NIO的缺陷
  • 类库和API繁杂

  • 入门门槛高

  • 工作量和难度大

  • JDK NIO依然存在Bug

Netty的优势
  • API简单

  • 入门门槛低

  • 性能高

  • 成熟、稳定

WebSocket入门
什么是WebSocket?
  • H5协议规范

  • 握手机制

  • 解决客户端和服务端实时通信产生的技术

WebSocket的优点
  • 节省通信开销

  • 服务器主动传送数据给客户端

  • 实时通信

WebSocket建立连接
  • 客户端发送握手请求

  • 服务端响应请求

  • 连接建立

WebSocket生命周期
  • 打开事件

  • 消息事件

  • 错误事件

  • 关闭事件

WebSocket关闭连接
  • 服务器关闭底层TCP连接

  • 客户端发起TCP Close


实战

以最基本简单的方式来演示WebSocket的入门,只需要JDK7以上和Netty核心包即可。那么先写个客户吧,也就四个文件即可,然后再写客户端,就用html+js吧,一个文件即可。

1.依赖包

IDE新建Maven工程(Grandle也一样),在pom.xml添加Netty包,这里使用最新的Netty 5.0.0.Alpha2

    <dependencies>        <dependency>            <groupId>io.nettygroupId>            <artifactId>netty-allartifactId>            <version>5.0.0.Alpha2version>        dependency>    dependencies>
2.Netty配置

在主工程目录下新建NettyConfig类,ws通讯会基于channel来交互的,因此我们需要创建一个自己使用的channel实例,

import io.netty.channel.group.ChannelGroup;import io.netty.channel.group.DefaultChannelGroup;import io.netty.util.concurrent.GlobalEventExecutor;public class NettyConfig {
      /**   * store group channel   */  public static ChannelGroup group = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE);}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值