1、HTTP协议长期-fi支持和各支持的浏览器
http://blog.csdn.net/fenglibing/article/details/7100222

2、WEBclient与服务端信息交互的几种方式

1)、Flash XMLSocket
入门演示样例:http://en.wikipedia.org/wiki/XMLSocket
不足:
a)、client必须安装 Flash 播放器;
b)、由于 XMLSocket 没有 HTTP 隧道功能,XMLSocket 类不能自己主动穿过防火墙;

c)、由于是使用套接口,须要设置一个通信port,防火墙、代理server也可能对非 HTTP 通道port进行限制;

2)、Java Applet 套接口
不足:
a)、须要安装Java的插件。
b)、有些浏览器执行于如Apple iOS、Android等是不支持Applet的。
c)、软件插件的安装可能会受制于当前用户的系统权限;
d)、受安全限制不可以正常执行;
e)、假设执行的Applet须要安装新的JRE,那么此时用户在看到Applet展示的时候会有等待的过程,这个可能会由于网络或者代理导致失败,使用户不可以正常使用该功能;
f)、Applet标签,必需要是支持跨浏览器的;

详见:http://en.wikipedia.org/wiki/Java_applet#Disadvantages

3)、Comet

a)、基于 AJAX 的长轮询(long-polling)方式

演示样例图:

存在问题就是IE不支持ajax的readystate状态为3的时候读取数据。IE仅仅有在AJAX的readystate请求状态为4的时候才可以读取服务端返回的数据;FF支持;

b)、基于 Iframe 及 htmlfile 的流(streaming)方式

演示样例图:

使用“htmlfile“的 ActiveX 组件,解决IE的载入显示问题;

浏览器兼容性比較好。Google Talk是基于这样的方式实现的;

还是存在从client往服务端发消息时,须要提交新的请求。

4)、HTML5中的WebSocket

1)~3)具体參见:https://www.ibm.com/developerworks/cn/web/wa-lo-comet

3、WebSocket

1)、WebSocket介绍
HTML5 Web Sockets规范定义了Web Sockets API,支持页面使用Web Socket协议与远程主机进行全双工的通信。它引入了WebSocket接口而且定义了一个全双工的通信通道,通过一个单一的套接字在Web上进行操作。

HTML5 Web Sockets以最小的开销高效地提供了Web连接。相较于常常须要使用推送实时数据到client甚至通过维护两个HTTP连接来模拟全双工连接的旧的轮询或长轮询(Comet)来说。这就极大的降低了不必要的网络流量与延迟。

要使用HTML5 Web Sockets从一个Webclient连接到一个远程端点,你要创建一个新的WebSocket实例并为之提供一个URL来表示你想要连接到的远程端点。

该规范定义了ws://以及wss://模式来分别表示WebSocket和安全WebSocket连接。一个WebSocket连接是在client与server之间HTTP协议的初始握手阶段将其升级到Web Socket协议来建立的,其底层仍是TCP/IP连接。

WebSocket Hybi草案12的地址:http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-12,能够以此为入口訪问其他的草案。

2)、长处
a)、server与client之间交换的标头信息非常小,大概仅仅有2字节;
b)、client与server都能够主动传送数据给对方;

c)、不用频率创建TCP请求及销毁请求,降低网络带宽资源的占用。同一时候也节省server资源。

3)、WebSocket数据帧的介绍
a)、草案版本号00到草案版本号05之间。具体能够查看草案文档,解码编码能够看见Netty的WebSocketFrameDecoder和WebSocketFrameEncoder实现;

b)、草案版本号06到如今最新的草案17。介绍參见文章:http://blog.csdn.net/fenglibing/article/details/6852497

4)、WebSocket不同版本号的几种握手方式
a)、无安全key、最老的WebSocket握手协议的实现(Flash)。
b)、带两个安全key请求头的后端握手实现;
c)、带一个安全key请求头的后端握手实现。

參见:http://blog.csdn.net/fenglibing/article/details/7100070

5)、WebSocket能够穿越防火墙吗?

WebSocket使用标准的80及443port,这两个都是防火墙友好协议,Web Sockets使用HTTP Upgrade机制升级到Web Socket协议。HTML5 Web Sockets有着兼容HTTP的握手机制,因此HTTPserver能够与WebSocketserver共享默认的HTTP与HTTPS端(80和443)。

6)、Web Sockets与代理server交互
代理server的问题:
a)、HTTP代理server可能会选择关闭流或闲置的WebSocket连接,由于它们看起好像是尝试连接一个没有回应的HTTPserver;
b)、代理server可能会缓冲未加密的HTTP响应。这将会对HTTP响应流带来不可预计的延迟;
c)、未加密的WebSocket连接(ws://开头的请求)server时。假设中间存在透明代理server,连接可能会失败,或者发送消息会失败。而加密的WebSocket连接在存在透明代理server的情况下成功的机率会比較大。

关于代理具体參见:http://www.infoq.com/cn/articles/Web-Sockets-Proxy-Servers

7)、使用演示样例展示

WebSocket经由浏览器本身实现后,在Web端的实现就很的简单,仅仅须要简单初使化一个WebSocket组件,而且添加onopen、onmessage、onclose等事件的处理就可以,下面是一个用于初使化WebSocket连接(WEB端JS实现)的源代码截图展示:

这一个截图展示的在不支持WebSocket的浏览器,使用Comet针对不同的浏览器进行的组件初使化处理操作:

以下这个图展示的是使用WebSocket与不使用WebSocket发送消息的代码及逻辑差异,当中画红线的部份为使用WebSocket发送消息的实现,仅仅有一行代码。而余下的代码。则是针对不支持WebSocket浏览器发送消息的代码

本文来源于:平立彬的博客

从Http它被连接到WebSocket相关推荐

  1. java实现等待程序响应_java – Ning:连接到websocket并等待响应

    使用Ning创建并连接到Websocket,以下是我的配置, NettyAsyncHttpProviderConfig config = new NettyAsyncHttpProviderConfi ...

  2. 从Http的连接到WebSocket

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 1.HT ...

  3. Java后端WebSocket的Tomcat实现

    转自: http://blog.chenzuhuang.com/archive/28.html http://www.cnblogs.com/xdp-gacl/p/5193279.html 一.Web ...

  4. python java web_Python 与 Java 使用 websocket 通信

    WebSocket协议是基于TCP的一种新的网络协议.它实现了浏览器与服务器全双工(full-duplex)通信--允许服务器主动发送信息给客户端. Java服务端 import java.io.IO ...

  5. websocket客户端

    2019独角兽企业重金招聘Python工程师标准>>> 使用的是java-websocket jar包 <dependency><groupId>org.ja ...

  6. SpringMVC 如何实现将消息的websocket

    哥们,你是不是也在做javaweb,但是javaweb我们平时大部分时间都是使用http协议,也就是浏览器实现请求,然后后台返回数据,但是这样不能满足你强大的野心啊,你想的时候后台可以向前台推送消息, ...

  7. rudesocket如何使用_[WebSocket入门]手把手搭建WebSocket多人在线聊天室(SpringBoot+WebS...

    前言 本文中搭建了一个简易的多人聊天室,使用了WebSocket的基础特性. 源代码来自老外的一篇好文: 本文内容摘要: 初步理解WebSocket的前后端交互逻辑 手把手使用 SpringBoot ...

  8. websocket实现方式

    2019独角兽企业重金招聘Python工程师标准>>> 一.jetty9.tomcat7     +  html5 1.server---pom.xml: <!-- j2ee ...

  9. websocket java 测试_Java后端WebSocket的Tomcat实现

    1 package me.gacl.websocket; 2 3 import java.io.IOException; 4 import java.util.concurrent.CopyOnWri ...

最新文章

  1. Win2008 server backup系统备份组件安装
  2. 一条 SQL 语句在 MySQL 中如何被执行的?
  3. 使用Shiro的JdbcRealm实现查询数据库进行身份认证
  4. PyTorch机器学习从入门到实践-CH1
  5. spring源代码系列(一)sring源代码编译 spring源代码下载 spring源代码阅读
  6. NOIP2012模拟试题【奶牛晒衣服】
  7. POJ 3683 Priest John's Busiest Day(2-ST)
  8. 他曾是离诺贝尔奖最近的中国人之一!
  9. 服务器测试网址填写注意事项
  10. 芒果iOS开发之Swift教程01-Swift基础
  11. 打开微信备份文件db_安卓手机微信数据导出方法-adb备份(无需root) - Fenlog软件...
  12. 微信小程序-轮播图实现
  13. 绩效打c被开除,员工将新东方告上法院,获赔416000元!
  14. 苹果CMS火车头采集发布模块教程
  15. 视觉素材-10 个值得珍藏的高清桌面壁纸网站
  16. 数据库原理与应用第一章笔记整理
  17. TPP:你的数据你做主 TPP将撤销政府的数据主权
  18. Oracle sql 对多个sql count的值再求和
  19. inventor如何钣金出弧面_Inventor钣金设计教程
  20. ppt如何变成pdf

热门文章

  1. python真实环境与虚拟环境均配置jupyter的方法,虚拟开发环境增加到notebook选项中
  2. 自己启动spark集群的实验记录
  3. scala运行的方式
  4. instance-based与model-based 区别
  5. linux内核与设备驱动,第二章 Linux内核与设备驱动程序
  6. 《系统集成项目管理工程师》必背100个知识点-58沟通方式
  7. Vue本地执行build之后打开dist目录下index.html正常访问
  8. 从实例入手学习Shiro与Web的整合
  9. 吐血整理 《计算机网络 五层协议之物理层(上)》
  10. 计算机等级考试三级数据库考点,全国计算机等级考试辅导:三级数据库考点