`
zyslovely
  • 浏览: 227754 次
  • 性别: 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权威指南

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

    Html5 WebSocket c++实例

    实现WebSocket与C++服务端的成功连接的实例:网页客户端,C++Server以及一个国外的完整实例;

    The Definitive Guide to HTML5 WebSocket(权威指南)(免积分)

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

    详解微信小程序实现WebSocket心跳重连

    最近在开发小程序用到了WebSocket,...WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 为什么需要Websocket HTTP 协议是一种无状态的、无连接的、单向的应用层协议。它采用了请求/响应模

    sprint boot整合netty5实现高并发websocket,不过netty5官网已经不推荐

    spring boot demo,整合netty5实现高并发websocket,并引入slf4g+lombok,采用maven形式; 直接导入运行,有测试页面也有实现代码及详细注释,src/main/webapps/TestNettyWebSocket.html里第十行改成 ws://localhost...

    websocket_for_linux-master_websocket_websocket客户端_WEBSOCKET单片机实现

    5WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,...HTML5 定义的 WebSocket 协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。

    一个简单的网页 Websocket 连接并实现心跳 Heartbeat

    创建 Socket 连接很简单,一行代码即可。 let ws = new WebSocket('wss://example.com/'); 如果服务器采用 SSL,只需要将 ws:// 替换成 wss:// let ws = new WebSocket('wss://echo.websocket.org/'); 然后是通过...

    HTML5 webSocket 教程

    解计算机网络协议的人,应该都知道:HTTP 协议是一种无...大多数 Web 应用程序将通过频繁的异步JavaScript和XML(AJAX)请求实现长轮询。轮询的效率低,非常浪费资源(因为必须不停连接,或者 HTTP 连接始终打开)。

    html5-websocket基于远程方法调用的数据交互实现

    一般在传统网页中注册用户信息都是通过post或ajax提交到页面处理,到了HTML5后我们有另一种方法就是通过websocket进行数据交互.websocket在数据交互有着传统网页所不具备的灵活性,通过Websocket建立长连接后服务器...

    前台用html5 websocket 后台用netty实现聊天系统

    前台用html5 websocket 后台用netty实现聊天系统,nettyWebsocket

    WebSocket的简单实现

    WebSocket是HTML5开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。

    HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天

    WebSocket 减少了延迟,因为一旦建立起WebSocket 连接,服务器可以在消息可用时发送它们。例如,和轮询不同,WebSocket只发出一个请求。服务器不需要等待来自客户端的请求。相似地,客户端可以在任何时候向服务

Global site tag (gtag.js) - Google Analytics