最近默默的在学websocket,推荐的当然是阮一峰的博客了,其中也学到了不少  可以去看看咯 http://www.ruanyifeng.com/blog/2017/05/websocket.html

WebSocket 协议在2008年诞生,2011年成为国际标准。

它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,就是终身平等的 哈哈。

减少通信量 :client 第一次需要与 server 建立连接,当 server 确认连接之后,两者便一直处于连接状态。

直到一方断开连接,WebSocket 连接才断开,与HTTP相比,websocket首部信息很小,连接的开销减少,通信量减少

其实也有其他的通信:

HTTP的缺陷

  • 请求只能从客户端开始。客户端不可以接收除响应以外的指令(通信只能由客户端发起)
  • 请求 / 响应首部未经压缩就发送。首部信息越多延迟越大。
  • 发送冗长的首部。每次互相发送相同的首部造成的浪费较多。

轮询(polling)

  • 在第一次请求后,服务器端没有数据更新,造成通信浪费,资源消耗
  • 当发送请求间隔加大可缓解通信的浪费,但当服务器端更新数据很快时,又不满足实时性
  • 每隔一段时间向服务器发送http请求,不论是否更新,都将数据发送给客户端

Ajax

实现页面局部加载的异步通信,减少了传输数据量,但http协议本身缺陷仍然存在

websocket

包括的特点有:

(1)建立在 TCP 协议之上,服务器端的实现比较容易。

(2)与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。

(3)数据格式比较轻量,性能开销小,通信高效。

(4)可以发送文本,也可以发送二进制数据。

(5)没有同源限制,客户端可以与任意服务器通信。

(6)协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。

下面说下基本的用法咯:

var ws = new WebSocket("wss://echo.websocket.org"); // WebSocket 对象作为一个构造函数,用于新建 WebSocket 实例。

ws.onopen = function(evt) {
console.log("Connection open ..."); // 实例对象的onopen属性,用于指定连接成功后的回调函数。
ws.send("Hello WebSockets!");
}; ws.onmessage = function(evt) {
console.log( "Received Message: " + evt.data); // 用于指定收到服务器数据后的回调函数。
ws.close();
}; ws.onclose = function(evt) { // 用于指定连接关闭后的回调函数。
console.log("Connection closed.");
};

webSocket.readyState

readyState属性返回实例对象的当前状态,共有四种。

CONNECTING:值为0,表示正在连接。
OPEN:值为1,表示连接成功,可以通信了。
CLOSING:值为2,表示连接正在关闭。
CLOSED:值为3,表示连接已经关闭,或者打开连接失败。

其实用起来也挺简单的,基本好像是那种直播,聊天上websocket会比较多,

看大家也都是结合node 来开发, 当然需要自己去实践过才知道优缺点呗,

我也在也在尝试webSocket 和 vue 结合起来写一些demo ,加强记忆。

websocket和通信的更多相关文章

  1. Spring Boot WebFlux-08——WebFlux 中 WebSocket 实现通信

    第08课:WebFlux 中 WebSocket 实现通信 前言 WebFlux 该模块中包含了对反应式 HTTP.服务器推送事件和 WebSocket 的客户端和服务器端的支持.这里我们简单实践下 ...

  2. websocket的通信原理

    首先什么是websocket? 1.websocket和http一样是一种通信协议,是HTML5的一种新的协议. 2.既然有了http协议了,为什么还会有websocket呢?是因为是为了弥补http ...

  3. 测试Websocket建立通信,使用protobuf格式交换数据

    接到一个应用测试,应用实现主要使用websocket保持长链接,使用protobuf格式交换数据,用途为发送消息,需要我们测试评估性能,初步评估需要测试长链接数.峰值消息数以及长期运行稳定性 整体需求 ...

  4. websocket通信 实现java模拟一个client与webclient通信

    发文原由: 熟悉socket通信的同学,对于socket模拟server与client,实现相互通信, 或者使用websocket与java模拟的websocket服务器通信(比如一个聊天室),对于这 ...

  5. SignalR 中使用 MessagePack 序列化提高 WebSocket 通信性能

    It's like JSON.but fast and small. MessagePack is an efficient binary serialization format. It lets ...

  6. Python Web学习笔记之WebSocket 通信过程与实现

    一.什么是 WebSocket ? WebSocket 是一种标准协议,用于在客户端和服务端之间进行双向数据传输.但它跟 HTTP 没什么关系,它是基于 TCP 的一种独立实现. 以前客户端想知道服务 ...

  7. [转] 在vue中使用SockJS实现webSocket通信

    最近接到一个业务需求,需要做一个聊天信息的实时展示的界面,这就需要和服务器端建立webSocket连接,从而实现数据的实时获取和视图的实时刷新.在此将我的实现记录下来,希望可以给有同样需求的人一些帮助 ...

  8. .NET 即时通信,WebSocket

    .NET 即时通信,WebSocket 即时通信常用手段 1.第三方平台 谷歌.腾讯 环信等多如牛毛,其中谷歌即时通信是免费的,但免费就是免费的并不好用.其他的一些第三方一般收费的,使用要则限流(1s ...

  9. Python3+WebSockets实现WebSocket通信

    一.说明 1.1 背景说明 前段时间同事说云平台通信使用了个websocket的东西,今天抽空来看一下具体是怎么个通信过程. 从形式上看,websocket是一个应用层协议,socket是数据链路层. ...

随机推荐

  1. idea 导入 open项目

    导入  import Project 选择你的项目目录 (位置可以直接是svn下下来的项目目录 不用新建空项目或者目录) 如果有提示直接yes  没有拉到 一路next 如果提示  覆盖就ok (一路 ...

  2. LoadRunner 技巧之 添加事务

    事务(Transaction)用于模拟用户的一个相对完整的.有意义的业务操作过程,例如登录.查询.交易.转账,这些都可以作为事务,而一般不会把每次HTTP请求作为一个事务. 拿笔者所测试的邮箱系统为例 ...

  3. Python+requests+excel接口测试

    2018-06-14   17:00:13 环境准备: - Python 3.7 - requests库 - xlrd 1.创建Excel文件 2.读取Excel文件 import xlrd clas ...

  4. Spring Web Flow 2.0 入门

    转载: https://www.ibm.com/developerworks/cn/education/java/j-spring-webflow/index.html 开始之前 关于本教程 本教程通 ...

  5. 人工智能AI------有限状态机、分层状态机、行为树

    https://www.cnblogs.com/zhanlang96/p/4793511.html 人工智能遵循着:感知->思考->行动决策方法:有限状态机(Finite-State Ma ...

  6. MySQL:添加用户、删除用户、授权、远程访问、修改密码

    1.创建用户 #test表示你要建立的用户名,后面的123456表示密码, #localhost限制在固定地址localhost登陆 CREATE USER test@localhost IDENTI ...

  7. 浅谈python中字典append 到list 后值的改变问题

    看一个例子 ? 1 2 3 4 d={'test':1} d_test=d d_test['test']=2 print d 如果你在命令行实践的话,会发现你改动的是d_test ,但是d 也跟着改变 ...

  8. PTA(Basic Level)1031.查验身份证

    一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8, ...

  9. urllib库:解析链接

    1from urllib.parse import urlparse, urlunparse, urlsplit, urlunsplit, urljoin, urlencode, parse_qs,  ...

  10. centos中安装python3.7

    1.1 CentOS 7编译安装Python3.7.X 1.安装依赖&下载python3.7 # 1.yum更新yum源 yum update # 2.安装Python 3.7所需的依赖否则安 ...