zoukankan      html  css  js  c++  java
  • WebSocket协议介绍

      WebSocket,即Web浏览器与Web服务器之间全双工通信标准,其中,WebSocket协议由IETF定位标准,WebSocket API由W3C定位标准。

      一旦Web服务器与客户端之间建立起WebSocket协议的通信连接,之后所有的通信都依靠这个专用协议进行。通信过程中互相发送JSON、XML、HTML或图片等任意格式的数据。

      由于是建立在HTTP基础上的协议,因此连接的发起发仍是客户端,而一旦确立WebSocket通信连接,不论服务器还是客户端,任意一方都可直接向对方发送报文。

        推送功能:支持由服务器向客户端推送数据的推送功能。这样,服务器可直接发送数据,而不必等待客户端的请求。

        减少通信量:只要建立起WebSocket连接,就希望一直保持连接状态。和HTTP相比,不但每次连接时的总开销减少,而且由于WebSocket的首部信息很少,通信量也相应减少了。为了实现WebSocket通信,在HTTP连接建立之后,需要完成一次“握手”的步骤。

    握手过程:

    请求:为了实现WebSocket通信,需要用到HTTP的Upgrade首部字段,告知服务器通信协议发生改变,以达到握手的目的。  形如:upgrade:websocket;同时Sec-WebSocket-Key 字段内记录着握手过程中必不可少的键值,形如Sec-WebSocket-Key:dGhlIHNhbXBsZSBuB25jZQ==;Sec-WebSocket-Protocol记录使用的子协议。形如:Sec-WebSocket-Protocol:chat,superchat。

    响应:对于之前的请求,返回状态码101 Switching Protocols 的响应。Sec-WebSocket-Accept的字段值是由握手请求中的Sec-WebSocket-Key的字段值生成的。形如:Sec-WebSocket-Accept:上pPLMBiTxaQ9kYGzzhzZRbK+xOo= ;成功握手确立WebSocket连接之后,通信时不再使用HTTP的数据帧,而采用WebSocket独立的数据帧。


  • 相关阅读:
    Android-WebView路由登录192.168.1.1
    Win7 & VirtualBox虚拟Ubuntu 本地虚拟机之间文件共享
    Android 简单的JNI编程
    Android ActionBar简单使用
    多个APK之间简单数据共享
    js代码移动Div 移动平台与PC平台
    JavaScript面向对象
    《SSO CAS单点系列》之 APP原生应用如何访问CAS认证中心
    insh.exe:*** Couldn't reserve space for cygwin's heap,Win32 error 0
    解决:SSM框架中普通类调用Service的问题 (转)
  • 原文地址:https://www.cnblogs.com/willam3808/p/12582509.html
Copyright © 2011-2022 走看看