想使用Websocket首先要知道Websocket是什么?

    1、websocket 是一种网络通信协议

    2、websocket 是 HTML5 新增的协议,是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通信的协议

Websocket存在的目的是什么?

    存在的目的可以先从 websocket 和 http 协议的异同来看

    同:1、都是建立在TCP协议上的,通过TCP协议来传输数据

           2、都是可靠性传输协议

           3、都是应用层协议

    异:1、websocket是HTML5中的协议,支持持久连接,HTTP不支持持久连接

           2、HTTP是单行协议,只能由客户端发起来,做不到服务器主动向客户端推送信息

再来看看http协议的特点:http协议是一个请求-响应协议,请求必须先由浏览器发给服务器,服务器响应这个请求,再把数据发给浏览器,服务器无法主动发送数据给浏览器。

从以上这些点可以看出:websocket是为了实现服务器可以任意时刻发送消息给浏览器这个功能而存在的

举个栗子:当我们写个系统,想要数据库发生变化就对页面的表单进行刷新保证表单信息实时更新,而不是再手动点击刷新进行刷新,我们可以通过websocket在修改数据库表单信息后对浏览器发一个信息让页面进行刷新

再举个例子:我们要在浏览器完成一个实时聊天的功能,我们可以用什么方式实现?

1、ajax轮询。轮询指浏览器通过javaScript启动一个定时器,然后用固定的时间间隔给服务器发送请求,询问服务器有没有消息。这样实行性不够,而且频繁的请求会给服务器带来很大的压力

2、Comet。Comet本质上也是轮询,但是在没有消息的情况下,服务器先拖一段时间,等到有消息了再回复。这个机制暂时地解决了实时性问题,但是它带来了新的问题:以多线程模式运行的服务器会让大部分线程大部分时间都处于挂起状态,极大地浪费服务器资源。另外,一个HTTP连接在长时间没有数据传输的情况下,链路上的任何一个网关都可能关闭这个连接,而网关是我们不可控的,这就要求Comet连接必须定期发一些ping数据表示连接“正常工作”。

3、websocket。websocket协议基于TCP协议是实现,包含初始的握手过程(只需要一次就可以实现持久连接),以及后续的多次数据帧双向传输过程。其目的是在websocket应用和websocket服务器进行频繁双向通信时,可以使服务器避免打开多个http连接,节约了资源,提高了工作效率和资源利用率。

Websocket 学习和应用

WebSocket目前支持两种统一资源标志符wswss,类似于HTTP和HTTPS。

 

聊天室实例:https://github.com/CYL12345/javaWebSocket.git

以上总结都是我在学习websocket查阅很多CSDN博主的优秀文章总结出来的,日后还会完善更新。

相关文章:

  • 2022-01-16
  • 2022-01-12
  • 2022-01-07
  • 2022-02-12
  • 2022-01-22
  • 2021-12-14
  • 2021-10-30
猜你喜欢
  • 2022-01-05
  • 2022-01-07
  • 2022-01-18
  • 2021-09-26
相关资源
相似解决方案