http与WebSocket

利用websocket连接服务器的最大特点就是:持久链接的特点。

共同点是:都是基于TCP协议进行client-server的链接,websocket是HTML5提出的一套补缺HTTP链接中不能持久链接的特点(除长连接,长轮询)

轮询(AJAX):指的是浏览器端定时发送请求到服务器端,服务器接收到请求后作出响应并关闭连接该次链接。
    (缺点是:在时间定时上需要考虑更多,多久进行一次轮询等)

长轮询:跟轮询的原理相似,但是有个重要的特点是,浏览器发送请求后,服务器此时是保持该链接(主要方法是死循环执行,定时sleep超时后断开连接),在定时断开链接之前,获取到最新数据并返回浏览器后,在由浏览器重新发起一个新的请求。
    (缺点是:会并发性的发起很多的http请求。)

轮询与长轮询共同的缺点是:需要浪费很多的http资源,请求的数量较大。

长连接:类似前端中跨域请求中,利用iframe的src的跨域特点,在页面中隐藏一个iframe进行定时获取后台数据,反馈到iframe中,实现后台数据的获取。
    长链接的缺点也是:必须要定时发起请求服务器更新数据资源。

前面的问题是:
  在连接后的过程中,服务器都会不停的链接与断开,数据头信息不停重复的发送,浪费宽带,信息交换的效率低下。

  他们之间建立的“长连接”是“伪长连接”,只是靠服务器不断循环实现了所谓的长连接效果。

websocket解决的问题:
    实质的推送方式是服务器主动推送,只要有数据就推送到请求方。(变被动为主动)

websocket采用异步回调的方式接受消息,当建立通信连接,可以做到持久性的连接,并进行通信。

  (而不像上面的几种方式一样需要定时进行发起请求到服务器获取最新更新信息,显得相当的被动)

websocket通过自己的 WS 协议(此处与HTTP协议有所区别)创建一个基于HTTP request请求并创建TCP链接之后,之后的数据交换都不需要再次去创建链接,实现真正的长连接。

websocket协议本质上是一个基于TCP的协议。建立连接需要握手,客户端(浏览器)首先向服务器(web server)发起一条特殊的http请求,web server解析后生成应答到浏览器,这样子一个websocket连接就建立了,直到某一方关闭连接。

当然基于Node.js编写的一个Socket.IO 是一个开源实现WebSocket的库,它通过node.js实现服务端的同时,也提供了客户端js库,socket.io 支持事件触发为基础进行的双向数据通信。

查看更多相关Socket.IO的资料转到:http://socket.io/

时间: 2024-10-11 11:00:17

http与WebSocket的相关文章

web新特性 之 WebSocket

详情参见:你真的了解WebSocket吗?     WebSocket系列教程   HTML5新特性之WebSocket WebSocket协议是基于TCP的一种新的协议.WebSocket最初在HTML5规范中被引用为TCP连接,作为基于TCP的套接字API的占位符.它实现了浏览器与服务器全双工(full-duplex)通信.其本质是保持TCP连接,在浏览器和服务端通过Socket进行通信. 服务端与客户端的连接不断开,实现全双工的操作.及服务端或是客户端都会给对方发送消息. WebSocke

websocket之拨云见雾

websocket是基于http相应的特性弥补其不足(就是个socket,不再是一次请求一次相应) 但缺点就是只有在版本较高的浏览器才支持websocket. 浏览器: <script type="text/javascript"> var socket = new WebSocket("ws://127.0.0.1:8002/xxoo"); ... </script> 服务端: import socket sock = socket.soc

websocket

什么是websocket? 不错的介绍:https://www.zhihu.com/question/20215561 websocket是一种持久化的协议,实现了浏览器和服务端的全双工通信: 握手阶段与HTTP协议相同,返回状态码101(switching protocols): 握手阶段完成之后,按照websocket协议进行通信 应用场景: 浏览器与服务端需要实时通信的场景,以前的解决方式:ajax轮询.HTTP长连接.Flash等. 实现: 浏览器端 const ws = new Web

websocket链接数限制

无法解决 当我需要每跳转新打开一个页面链接一次websocket的时候,第六个开始loading,关掉前面的,会加载出来,查了查.... 由于websocket属于属于持久链接 不同的浏览器针对同一服务器的持久链接的数量限制如下: chrome  6 firefox  6 Safari 5 IE11以下 不支持 这种H5的新新技术不得不说有各种安全和兼容性问题,慎重选用

java SSM框架 多数据源 代码生成器 websocket即时通讯 shiro redis 后台框架源码

获取[下载地址]   QQ: 313596790官网 http://www.fhadmin.org/A 调用摄像头拍照,自定义裁剪编辑头像,头像图片色度调节B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,快速开发利器)+快速表单构建器 freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块C 集成阿里巴巴数据库连接池druid  数据库连接池  阿里巴巴的 druid.Druid在监控.可扩展性.稳定性和性能方面都

异步通信----WebSocket

什么是WebSocket? WebSocket API是下一代客户端-服务器的异步通信方法.该通信取代了单个的TCP套接字,使用ws或wss协议,可用于任意的客户端和服务器程序.WebSocket目前由W3C进行标准化.WebSocket已经受到Firefox 4.Chrome 4.Opera 10.70以及Safari 5等浏览器的支持. WebSocket API最伟大之处在于服务器和客户端可以在给定的时间范围内的任意时刻,相互推送信息.WebSocket并不限于以Ajax(或XHR)方式通

QDjango,tufao,C++ websocket client/server

QDjango, a Qt-based C++ web frameworkhttps://github.com/jlaine/qdjango/ An asynchronous web framework for C++ built on top of Qt http://vinipsmaker.github.io/tufao/https://github.com/vinipsmaker/tufao C++ websocket client/server library http://www.za

PHP基于websocket实时通信的实现—GoEasy

PHP websocket实时消息推送 实现步骤如下: 1. 获取 GoEasy appkey. 在 goeasy 官网上注册一个账号,并新建一个 app. APP 创建好后系统会为该 app 自动生成两个 key, 一个既可以用来接收又可以用来推送 (supper key),另一个只可以用来接收(subscriber key). 2. 客户端订阅一个 channel. a. 在客户端引入 goeasy.js , js 地址: http://cdn.goeasy.io/goeasy.js 需要注

websocket实战(1) 入门

1.WebSocket介绍 1.1 概念 WebSocket是HTML5中一系列新的API,或者说新规范,新技术.支持页面上使用Web Socket协议与远程主机进行全双工的通信.它引入了WebSocket接口并且定义了一个全双工的通信通道,通过一个单一的套接字在Web上进行操作. 1.2 websocket vs HTTP 首先,web技术发展经历了以下阶段. 静态页面(html) 动态页面(cgi,j2ee,php...) Ajax技术 comet技术(轮询) 1.2.1 实现方案对比 举个

认识HTML5的WebSocket

认识HTML5的WebSocket 在HTML5规范中,我最喜欢的Web技术就是正迅速变得流行的WebSocket API.WebSocket提供了一个受欢迎的技术,以替代我们过去几年一直在用的Ajax技术.这个新的API提供了一个方法,从客户端使用简单的语法有效地推动消息到服务器.让我们看一看HTML5的WebSocket API:它可用于客户端.服务器端.而且有一个优秀的第三方API,名为Socket.IO. 一.什么是WebSocket API? WebSocket API是下一代客户端-