Websocket

1.websocket是什么?

WebSocket是为解决客户端与服务端实时通信而产生的技术。其本质是先通过HTTP/HTTPS协议进行握手后创建一个用于交换数据的TCP连接,

此后服务端与客户端通过此TCP连接进行实时通信。

2.websocket的优点

以前我们实现推送技术,用的都是轮询,在特点的时间间隔有浏览器自动发出请求,将服务器的消息主动的拉回来,在这种情况下,我们需要不断的向服务器 发送请求,然而HTTP request 的header是非常长的,里面包含的数据可能只是一个很小的值,这样会占用很多的带宽和服务器资源。会占用大量的带宽和服务器资源。

WebSocket API最伟大之处在于服务器和客户端可以在给定的时间范围内的任意时刻,相互推送信息。在建立连接之后,服务器可以主动传送数据给客户端。

此外,服务器与客户端之间交换的标头信息很小。

WebSocket并不限于以Ajax(或XHR)方式通信,因为Ajax技术需要客户端发起请求,而WebSocket服务器和客户端可以彼此相互推送信息;

关于ajax,comet,websocket的详细介绍,和websocket报文的介绍,大家可以参看http://www.shaoqun.com/a/54588.aspx  网页设计]Ajax、Comet与Websocket,

我如果以后有时间,也会写出来的

3.如何使用websocket

客户端

在支持WebSocket的浏览器中,在创建socket之后。可以通过onopen,onmessage,onclose即onerror四个事件实现对socket进行响应

一个简单是示例

var ws = new WebSocket(“ws://localhost:8080”);

ws.onopen = function(){  console.log(“open”);ws.send(“hello”);};ws.onmessage = function(evt){console.log(evt.data)};ws.onclose = function(evt){console.log(“WebSocketClosed!”);};ws.onerror = function(evt){console.log(“WebSocketError!”);};

1.var ws = new WebSocket(“ws://localhost:8080”);

申请一个WebSocket对象,参数是需要连接的服务器端的地址,同http协议使用http://开头一样,WebSocket协议的URL使用ws://开头,另外安全的WebSocket协议使用wss://开头。

ws.send(“hello”);
用于叫消息发送到服务端
2.ws.onopen = function() { console.log(“open”)};

当websocket创建成功时,即会触发onopen事件
3.ws.onmessage = function(evt) { console.log(evt.data) };
当客户端收到服务端发来的消息时,会触发onmessage事件,参数evt.data中包含server传输过来的数据
4.ws.onclose = function(evt) { console.log(“WebSocketClosed!”); };

当客户端收到服务端发送的关闭连接的请求时,触发onclose事件
5.ws.onerror = function(evt) { console.log(“WebSocketError!”); };
如果出现连接,处理,接收,发送数据失败的时候就会触发onerror事件
我们可以看出所有的操作都是采用事件的方式触发的,这样就不会阻塞UI,使得UI有更快的响应时间,得到更好的用户体验。

转 https://www.cnblogs.com/lxtblogs/p/4947898.html

js--webSocket入门相关推荐

  1. 54 Node.js快速入门

    技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 1.Node开发概述 1.1 为什么要学习服务器端开发基础 能够与后端程序员更加紧密的配合 ...

  2. Node.js核心入门(二)

    目录: Node.js核心入门(一) 全局对象 常用工具 事件机制 Node.js核心入门(二) 文件系统访问 HTTP服务器与客户端 文件系统 fs fs 模块是文件操作的封装,它提供了文件的读取. ...

  3. EChart.js 简单入门

    EChart.js 简单入门 最近有一个统计的项目要做,在前端的数据需要用图表的形式展示.网上搜索了一下,发现有几种统计图库. MSChart   这个是Visual Studio里的自带控件,使用比 ...

  4. node 没有界面的浏览器_node.js爬虫入门(二)爬取动态页面(puppeteer)

    之前第一篇爬虫教程node.js爬虫入门(一)爬取静态页面讲解了静态网页的爬取,十分简单,但是遇到一些动态网页(ajax)的话,直接用之前的方法发送请求就无法获得我们想要的数据.这时就需要通过爬取动态 ...

  5. TensorFlow.js快速入门

    by Pau Pavón 通过保罗·帕文(PauPavón) TensorFlow.js快速入门 (A quick introduction to TensorFlow.js) TensorFlow ...

  6. node.js Websocket消息推送---GoEasy

    Goeasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送!个人感觉goeasy推送更稳定,推送速度快,代码简单易懂上手快 浏览器兼容性:GoEasy推送支持websocket 和 ...

  7. (vue基础试炼_01)使用vue.js 快速入门hello world

    文章目录 一.需求案例 二.案例实现 2.1. 原始js写法 2.2. 怎样使用vue.js ? 2.3. 使用vue.js 写法 三.案例vue简述? 四.案例趣味延伸 五.表达值作用及嘱咐语 一. ...

  8. js console 输出到文件_Node.js核心入门

    正文 核心模块是Node.js的心脏,主要是有一些精简高效的库组成(这方面和Python有很大的相似之处),为Node.js提供了基础的API.主要内容包括: Node.js核心入门(一) 全局对象 ...

  9. Node.js:入门资料

    <快速搭建 Node.js 开发环境以及加速 npm> http://fengmk2.com/blog/2014/03/node-env-and-faster-npm.html <N ...

  10. JS解密入门——有道翻译

    JS解密入门--有道翻译 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不知道如何去学习更加高深的知识. 那么 ...

最新文章

  1. 从电视到网络,vivo营销之变
  2. AttributeError: module ‘sys‘ has no attribute ‘maxint‘
  3. ARP扫描工具arp-scan
  4. Docker 核心概念、安装、端口映射及常用操作命令,详细到令人发指。
  5. android qq分享自动弹出,史上最详细Android集成QQ,微信,微博分享(不要第三方)持续更新中...
  6. css实现垂直居中定位
  7. ES6基础5(Promise)-学习笔记
  8. MongoDB入门 - 安装教程
  9. 使用Python批量修改PPTX文件中文本框格式
  10. 天国近了(一) -- 揭穿OOP神话
  11. bouncing-balls-evil-circle
  12. css鼠标拖拉卡顿_JavaScript实现元素拖动性能优化
  13. 【第四章】 资源 之 4.4 Resource通配符路径 ——跟我学spring3
  14. 第二部分 python基础 day10\11\12 运算符与基本数据类型
  15. iOS 更新日志 - 持续更新中
  16. linux系统下查所有驱动信息,Linux系统查看驱动信息
  17. linux dd winpe,winpe/linux多重启动
  18. 亲爱的朋友,您幸福吗?
  19. 在JavaScript中使用Octet Streams
  20. Three TextureLoader纹理贴图不显示图片(显示黑色)

热门文章

  1. 多系统交互中DBA该确认的一些事情
  2. Linux虚拟机创建后如何进行登录(Windows Azure)
  3. 管理 Oracle Solaris ZFS 存储池网址
  4. Android中Activity共享变量的另一方法:Application context
  5. python判断字符串是否是数字字母
  6. Python发展迅猛,如何在Python热中脱颖而出了?
  7. 蛇形摆matlab,小学生注意力辅导
  8. 压缩感知及应用 源代码_【DMD应用】基于压缩感知超分辨鬼成像
  9. Linux 的无障碍设置如何操作?
  10. 教你C语言实现通讯录的详细代码