`
zyslovely
  • 浏览: 231641 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

html5实现websocket 长连接

 
阅读更多
http://blog.csdn.net/fenglibing/article/details/7108982

1)、WebSocket介绍
HTML5 Web Sockets规范定义了Web Sockets API,支持页面使用Web Socket协议与远程主机进行全双工的通信。它引入了WebSocket接口并且定义了一个全双工的通信通道,通过一个单一的套接字在Web上进行操作。HTML5 Web Sockets以最小的开销高效地提供了Web连接。相较于经常需要使用推送实时数据到客户端甚至通过维护两个HTTP连接来模拟全双工连接的旧的轮询或长轮询(Comet)来说,这就极大的减少了不必要的网络流量与延迟。
要使用HTML5 Web Sockets从一个Web客户端连接到一个远程端点,你要创建一个新的WebSocket实例并为之提供一个URL来表示你想要连接到的远程端点。该规范定义了ws://以及wss://模式来分别表示WebSocket和安全WebSocket连接。一个WebSocket连接是在客户端与服务器之间HTTP协议的初始握手阶段将其升级到Web Socket协议来建立的,其底层仍是TCP/IP连接。
WebSocket Hybi草案12的地址:http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-12,可以以此为入口访问其它的草案。

2)、优点
a)、服务器与客户端之间交换的标头信息很小,大概只有2字节;
b)、客户端与服务器都可以主动传送数据给对方;
c)、不用频率创建TCP请求及销毁请求,减少网络带宽资源的占用,同时也节省服务器资源;

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及443端口,这两个都是防火墙友好协议,Web Sockets使用HTTP Upgrade机制升级到Web Socket协议。HTML5 Web Sockets有着兼容HTTP的握手机制,因此HTTP服务器可以与WebSocket服务器共享默认的HTTP与HTTPS端(80和443)。

6)、Web Sockets与代理服务器交互
代理服务器的问题:
a)、HTTP代理服务器可能会选择关闭流或闲置的WebSocket连接,因为它们看起好像是尝试连接一个没有回应的HTTP服务器;
b)、代理服务器可能会缓冲未加密的HTTP响应,这将会对HTTP响应流带来不可估计的延迟;
c)、未加密的WebSocket连接(ws://开头的请求)服务器时,如果中间存在透明代理服务器,连接可能会失败,或者发送消息会失败;而加密的WebSocket连接在存在透明代理服务器的情况下成功的机率会比较大;
关于代理详细参见:http://www.infoq.com/cn/articles/Web-Sockets-Proxy-Servers
分享到:
评论
1 楼 wahahachuang5 2017-09-12  
web实时推送技术使用越来越广泛,但是自己开发又太麻烦了,我觉得没有那个必要,GoEasy就挺不错的,服务器稳定,代码简洁易懂;官网: http://goeasy.io/

相关推荐

    html5 websocket 建立连接通讯

    在HTML5中,WebSocket API允许开发者创建一个到服务器的WebSocket连接,并通过这个连接进行全双工通信。WebSocket接口定义在`window.WebSocket`对象中,使用时首先需要创建一个WebSocket对象,然后通过`connect()`...

    C语言实现的websocket

    WebSocket是一种在...综上所述,C语言实现WebSocket涉及TCP套接字编程、WebSocket协议理解和实现、以及可能的HTML辅助调试。这个过程需要深入理解网络协议和C语言编程,同时也提供了学习和实践网络编程的良好机会。

    WebSocket长连接实现聊天IM 接收发送消息,百分百能用

    2. **Android实现WebSocket**: - **选择库**:OkHttp是一个流行的网络请求库,它支持WebSocket。首先,你需要在项目中引入OkHttp库。 - **创建WebSocket**:使用OkHttpClient.Builder配置WebSocket监听器,并通过...

    H5实现websocket聊天对话

    - 后端:服务器端需要处理WebSocket连接,接收并分发消息,可能使用Node.js的ws库或者Java的Jetty WebSocket API等。 4. 聊天功能实现: - 用户注册/登录:通常通过HTTP/HTTPS完成,获取用户身份标识。 - 聊天室...

    C#_WinForm实现WebSocket及时通讯

    客户端方面,我们需要在WinForm应用中创建一个WebSocket连接,并保持其活动状态。这通常涉及初始化WebSocket客户端对象,设置服务器地址和端口,然后打开连接。在WinForm界面上,可以添加文本框和按钮,以便用户输入...

    基于Tomcat实现HTML5的WebSocket

    基于Tomcat实现WebSocket,首先需要确保Tomcat版本支持WebSocket。从Tomcat 7.0.27开始,Tomcat内建了对WebSocket的支持,它实现了JSR 356(Java API for WebSocket)规范。以下是实现步骤: 1. **创建WebSocket...

    ios 实现websocket和h5 websocket通讯

    1. **使用库**: 在iOS上实现WebSocket,通常会用到第三方库,比如`Starscream`或`Socket.IO`。`Starscream`是一个轻量级的WebSocket框架,易于集成且文档详尽。首先,你需要通过CocoaPods或者Swift Package Manager...

    html页面测试websocket

    接下来,我们将深入探讨WebSocket的工作原理以及这些文件在实现WebSocket通信中的作用。 WebSocket协议是在HTTP/1.1的基础上发展起来的,但与HTTP不同的是,WebSocket连接一旦建立,就会保持开放,直到客户端或...

    VB6.0 实现WebSocket 例子.7z

    要使用VB6.0实现WebSocket通信,通常需要以下步骤: 1. **选择或创建WebSocket库**: - 可以寻找已经存在的VB6.0 WebSocket库,如SuperWebSocket,它是一个开源的.NET库,提供了对VB6的支持。 - 如果找不到合适的...

    用IDEA工具实现springmvc+websocket长链接

    4. **实现WebSocket处理器**:创建一个处理WebSocket连接的类,如`ChatWebSocketHandler`,继承自`WebSocketHandler`,重写其`handleTextMessage`方法来处理接收到的消息。 5. **创建WebSocket端点**:定义...

    服务器端-客户端,websocket长连接实现Android消息推送

    5. **消息收发**:WebSocket连接建立后,客户端和服务器可以通过send()方法互相发送JSON或其他格式的消息。消息可以是文本或二进制数据。 6. **心跳检测与重连机制**:为了确保连接的稳定性,通常需要实现心跳检测...

    HTML5 WebSocket权威指南

    书中讨论了基于WebSocket的架构师如何减少不必要的网络开销和延迟层,如何通过WebSocket对广泛使用的协议(如XMPP和STOMP)进行分层,如何保护WebSocket连接和在企业部署基于 WebSocket的应用程序。主要内容包括: ...

    HTML5+WebSocket实现多文件同时上传的实例

    3. **建立WebSocket连接**:在客户端,我们需要创建一个WebSocket实例,连接到服务器的WebSocket端点。连接成功后,可以开始文件上传过程。 4. **文件上传**:对于每个`FileInfo`对象,我们可以使用`FileReader`API...

    基于thinkphp5.1和workerman框架,HTML5的websocket即时通讯.zip

    在WebSocket即时通讯中,Workerman作为服务器端的支撑,能够处理WebSocket连接,实现与客户端的双向通信,确保数据的实时传输。 3. **HTML5**: HTML5是下一代HTML标准,其一大亮点就是提供了WebSocket协议,用于...

    HTML5中的websocket实现直播功能

    在实现基于 HTML5 的 WebSocket 直播功能时,首先需要在客户端(通常是录像页面)创建一个 WebSocket 实例,通过 JavaScript 的 `new WebSocket()` 构造函数完成。例如,`var socket = new WebSocket("ws://" + ...

    Html5 WebSocket c++实例

    综上所述,"Html5 WebSocket c++实例"涵盖的内容包括WebSocket的基本概念、WebSocket API的使用、C++实现WebSocket服务器的方法以及如何在实际项目中进行调试和优化。通过这个实例,开发者可以学习到如何在C++和...

    基于node+html5实现websocket即时通信.zip

    下面将详细阐述WebSocket的基本概念、工作原理以及如何使用Node.js和HTML5来实现WebSocket即时通信。 1. WebSocket基础 WebSocket协议在HTTP的基础上进行了扩展,提供了全双工的通信能力。在连接建立后,客户端和...

    html5中websocket php实现

    本篇文章将详细探讨WebSocket在HTML5中的应用以及如何使用PHP来实现WebSocket服务。 首先,WebSocket API为Web开发者提供了与服务器进行双向通信的能力,不再局限于HTTP请求-响应模式。当用户打开一个WebSocket连接...

    HTML5 websocket 聊天

    安全性方面,WebSocket连接可以通过HTTPS升级,以`wss`协议提供加密传输,确保数据安全。此外,还可以结合JWT(JSON Web Tokens)或其他身份验证机制来验证用户身份。 综上所述,HTML5 WebSocket聊天应用结合Java和...

    webSocket+HTML5

    2. index.html - HTML5页面,包含JavaScript代码来初始化WebSocket连接,显示接收到的消息,并处理用户输入。 3. style.css - 用于美化HTML页面的CSS样式表。 4. script.js - 客户端JavaScript代码,处理WebSocket的...

Global site tag (gtag.js) - Google Analytics