Websocket原理及使用场景

转载 2018年04月15日 17:07:04

WebSocket的使用场景

社交聊天、弹幕、多玩家游戏、协同编辑、股票基金实时报价、体育实况更新、视频会议/聊天、基于位置的应用、在线教育、智能家居等需要高实时的场景

由轮询到WebSocket

1 轮询

客户端和服务器之间会一直进行连接,每隔一段时间就询问一次。客户端会轮询,有没有新消息。这种方式连接数会很多,一个接受,一个发送。而且每次发送请求都会有Http的Header,会很耗流量,也会消耗CPU的利用率。

2 长轮询

长轮询是对轮询的改进版,客户端发送HTTP给服务器之后,有没有新消息,如果没有新消息,就一直等待。当有新消息的时候,才会返回给客户端。在某种程度上减小了网络带宽和CPU利用率等问题。但是这种方式还是有一种弊端:例如假设服务器端的数据更新速度很快,服务器在传送一个数据包给客户端后必须等待客户端的下一个Get请求到来,才能传递第二个更新的数据包给客户端,那么这样的话,客户端显示实时数据最快的时间为2×RTT(往返时间),而且如果在网络拥塞的情况下,这个时间用户是不能接受的,比如在股市的的报价上。另外,由于http数据包的头部数据量往往很大(通常有400多个字节),但是真正被服务器需要的数据却很少(有时只有10个字节左右),这样的数据包在网络上周期性的传输,难免对网络带宽是一种浪费。

3  WebSocket

现在急需的需求是能支持客户端和服务器端的双向通信,而且协议的头部又没有HTTP的Header那么大,于是,Websocket就诞生了!流量消耗方面,相同的每秒客户端轮询的次数,当次数高达数万每秒的高频率次数的时候,WebSocket消耗流量仅为轮询的几百分之一

WebSocket协议原理

Websocket是应用层第七层上的一个应用层协议,它必须依赖 HTTP 协议进行一次握手 ,握手成功后,数据就直接从 TCP 通道传输,与 HTTP 无关了。

Websocket的数据传输是frame形式传输的,比如会将一条消息分为几个frame,按照先后顺序传输出去。这样做会有几个好处:

1 大数据的传输可以分片传输,不用考虑到数据大小导致的长度标志位不足够的情况。

2 和http的chunk一样,可以边生成数据边传递消息,即提高传输效率。

WebSocket和Socket的区别与联系

首先,Socket 其实并不是一个协议。它工作在 OSI 模型会话层(第5层),是为了方便大家直接使用更底层协议(一般是 TCP 或 UDP )而存在的一个抽象层。Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API)。

Socket通常也称作”套接字”,用于描述IP地址和端口,是一个通信链的句柄。网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket,一个Socket由一个IP地址和一个端口号唯一确定。应用程序通常通过”套接字”向网络发出请求或者应答网络请求。

Socket在通讯过程中,服务端监听某个端口是否有连接请求,客户端向服务端发送连接请求,服务端收到连接请求向客户端发出接收消息,这样一个连接就建立起来了。客户端和服务端也都可以相互发送消息与对方进行通讯,直到双方连接断开

websocket的应用场景

WebSockets支持及时数据交换,并被所有现代浏览器支持。请直接在你的web apps上使用它吧。 至所有我的读者:幸运的是我目前在巴西进行Scaling systems项目,享受32度的气...
  • yebanfengdi
  • yebanfengdi
  • 2016-07-27 09:57:39
  • 5223

WebSocket原理及技术简介

WebSocket原理及技术简介 目录 1    引言    1 2    WebSocket技术及协议    2 2.1    WebSocket API    2 2.1.1    ...
  • yinqingwang
  • yinqingwang
  • 2016-09-17 20:32:41
  • 17056

Websocket协议概念、技术背景和原理介绍

WebSocket是一种在单个 TCP 连接上进行全双工通讯的协议。本篇主要对websocket的概念和技术背景和原理做一个介绍。...
  • u013067629
  • u013067629
  • 2016-09-10 10:00:00
  • 2952

WebSocket的原理,以及和Http的关系

http://www.cnblogs.com/Herzog3/p/5088130.html
  • feixiaohuijava
  • feixiaohuijava
  • 2016-09-27 11:06:19
  • 587

Android学习之旅(第一篇) SurfaceView的原理以及使用场景

为什么要使用SurfaceView来实现动画?因为View的绘图存在以下缺陷: View缺乏双缓冲机制 当程序需要更新View上的图像时,程序必须重绘View上显示的整张图片 新线程无法直接更新Vie...
  • wtt945482445
  • wtt945482445
  • 2016-09-20 20:43:26
  • 997

Servlet监听器

  • 2012年08月06日 16:59
  • 103KB
  • 下载

nginx支持websocket及websocket部分原理介绍

nginx支持websocket及websocket部分原理介绍最近ipc通过websocket与server进行通行,经过无法通过nginx进行反向代理,只有直连nodejs端口。而且部署到阿里云用...
  • m0_37263637
  • m0_37263637
  • 2017-12-22 11:03:53
  • 234

WebSocket的使用场景

WebSocket使用场景1.社交聊天最著名的就是微信,QQ,这一类社交聊天的app。这一类聊天app的特点是低延迟,高即时。即时是这里面要求最高的,如果有一个紧急的事情,通过IM软件通知你,假设...
  • jikefzz1095377498
  • jikefzz1095377498
  • 2018-03-19 16:04:46
  • 24

Java中CountDownLatch,CyclicBarrier以及Semaphore的使用场景

Java并发包中提供了很多有用的工具类来帮助开发者进行并发编程,今天我就来说说CountDownLatch,CyclicBarrier以及Semaphore这三个的用法和使用场景。 1.CountDo...
  • jianjun200607
  • jianjun200607
  • 2016-11-09 17:48:07
  • 381

Spring WebSocket详解

Spring WebSocket详解作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszsSpring框架从4.0版开始支持WebSocket,下面我将详述Spr...
  • chszs
  • chszs
  • 2015-06-21 11:57:44
  • 6399
收藏助手
不良信息举报
您举报文章:Websocket原理及使用场景
举报原因:
原因补充:

(最多只允许输入30个字)