精华内容
下载资源
问答
  • websocket建立连接过程
    千次阅读
    2021-11-10 20:56:32

    Websocket 是一个 双向通讯 的应用层协议。 

    需要先建立TCP连接,(既TCP三次握手后),就能传输数据。

     tip:第一次握手,Websocket就可以通讯了,建立一条TCP的通信通道进行数据的传送。

    在 WebSocket API,浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

    补充知识点:http不存在连接的概念,只存在请求和响应,请求和响应都是数据包。它们之间都是经过由TCP(传输层)创建的连接,http请求是在这个连接的基础上发送的;

    -------------------------------------------------------------------------------------------------------------------------

    <script>
      var ws = new WebSocket('ws://localhost:8080');
      ws.onopen = function () {
        console.log('ws onopen');
        ws.send('from client: hello');
      };
      ws.onmessage = function (e) {
        console.log('ws onmessage');
        console.log('from server: ' + e.data);
      };
    </script>

     

     

    参考:WebSocket介绍和Socket的区别_王卫东 博客-CSDN博客

    参考:WebSocket协议:5分钟从入门到精通 - 程序猿小卡 - 博客园   非常好,非常详细

    更多相关内容
  • WebSocket建立连接过程

    千次阅读 2022-03-02 19:39:30
    二、webSocket建立连接过程 一、WebSocket是什么? WebSocket实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的。解决了http无状态、短链接和服务器端无法主动给客户端推送数据...

    一、WebSocket是什么?

    WebSocket实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的。解决了http无状态、短链接和服务器端无法主动给客户端推送数据等问题。其通信基础也基于TCP。由于较老的浏览器可能不支持WebSocket协议,所以使用WebSocket通信的双方在进行TCP的三次握手之后,还需要额外在进行一次握手,这一次握手的双方通信的报文也是基于http协议改造的。

    二、webSocket建立连接的过程

    首先要经过TCP的三次握手,在此就不赘述了,可以参考之前的文章
    一次真实的WebSocke请求:
    在这里插入图片描述
    格式要求:

    • 握手必须是一个有效的HTTP请求
    • 请求方式必须是GET,且HTTP的版本必须是1.1
    • 请求头中必须包含host字段
    • 请求头中必须包含Connection字段,且值为Upgrade
    • 请求头中必须包Sec-WebSocket-Key字段,该字段值是客户端的标识编码成 base64 格式
    • 请求必须包含 Sec-WebSocket-Version字段信息,值必须为 13
    • 请求必须包含Origin 字段;

    拟人化展示从HTTP协议升级到WebSocket协议的过程:
    在这里插入图片描述
    1、发送一个GET请求
    关键:Upgrade: websocket;Connection: Upgrade;
    这两个就告诉服务器,我要发起websocket协议,我不是HTTP

    2、服务器收到了协议,返回一个 Switching Protocol, 这样就连接成功了

    3、接下来的通信都是websocket, 这样就很好的连接了

    展开全文
  • Websocket连接建立过程选择协议3次握手协议转换连接订阅消息推送与确认 选择协议 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下...

    最近为了加深对Websocket协议的理解,通过wireshark抓包工具,对websocket建立连接、消息推送以及确认等一系列操作进行分析,为了方便后续查找及回顾,特此记录。
    考虑到部分老旧浏览器不支持websocket协议,采用socketjs,完成连接的建立。

    选择协议

    发送选择协议的请求

    客户端向服务端发送如下请求,用于咨询使用哪类协议建立连接。
    在这里插入图片描述
    请求响应如下
    在这里插入图片描述
    通过响应结果,发现,该连接可使用websocket协议进行建立。

    3次握手

    通过响应结果,客户端开始基于websocket协议建立连接。

    客户端向服务端发送连接请求包

    在这里插入图片描述

    服务端接收客户端报文

      服务端接收客户端发送的报文,通过SYN=1,确认客户端需要建立连接。于是向客户端发送SYN=1,ACK=1的报文。同时将Acknowledgement number序号加1。
    

    在这里插入图片描述

    客户端接收服务端发送的报文,并确认

     客户端接收服务发送的报文,检查序列号是否正确(第一次发送的SYN报文的序号 + 1),以及ACK位是否为1。若正确,则发送一个确认包。
    

    在这里插入图片描述
    至此,完成tcp3次握手。

    协议转换

    接着,客户端向服务端发送一个特殊的HTTP请求。
    在这里插入图片描述
    响应如下所示
    在这里插入图片描述
    101响应码,表名服务器了解客户端请求,开始切换Upgrade请求头中定义的协议。
    Websocket协议本质上,是一个基于TCP的协议,练级连接前,完成3次握手后,客户端向服务端发起一个特殊http请求,server端解析后,应答给客户端,至此一个websocket连接完成建立。

    连接订阅

    客户端通过websocket协议,项服务端发送一个CONNECT命令帧

    在这里插入图片描述

    服务端接收后,返回一个CONNECTED命令帧

    在这里插入图片描述

    客户端向服务端发送SUBSCRIBE命令帧

     在此命令帧中,客户端提供需要订阅的目的地地址。
    

    在这里插入图片描述

    消息推送与确认

    服务端推送消息

     服务端,通过MESSAGE命令帧,向客户端推送数据。
    

    在这里插入图片描述
    消息内容如下所示
    在这里插入图片描述

    客户端确认收到消息

     客户端收到消息后,向服务端发送一个ack消息,用于确认该消息已收到。
    

    在这里插入图片描述
    至此,完成Websocket连接建立分析操作。

    展开全文
  • WebSocket建立连接传参常用方式

    千次阅读 2022-06-09 14:55:24
    websocket基础入门之参数获取

    近期在做一个物联网项目,需要实现页面的实时更新,这里考虑到用websocket来实现,对于让项目支持websocket这个在springboot中基于spring-boot-starter-websocket来构建是一件很简单的事情,本文就不赘述了。本文主要就建立websocket时如何传参进行说明

    背景

    当我们的一个web站点,既有普通的http请求也有websocket通道的时候,需要做到会话一致则需要在开发过程中稍加注意,一般是先登录web站点,然后再建立websocket通道,这个时候会产生用户登录token,在websocket通道里面,需要能知道是对应的用户,一般在建立websocket通道的时候将token传入后端,让后端处理即可。

    传参的两种方式

    在websocket建立时传参都是通过URL体现的,主要是通过path和?+参数形式;

    方式一

    socket注释

    @ServerEndpoint("/websocket/{param}")
    

    方式二

    "ws:localhost:8080/websocket/123?username=zhangsan";
    

    后端获取参数方式

    调试验证

    在这里插入图片描述

    编码获取参数

    @OnOpen
    public void open(Session session, @PathParam("param")String  param) {
        //通过注解@PathParam获取参数
        System.out.println("注解参数: "+param);
        //通过URL获取
        Map<String, String> map = session.getPathParameters();
        System.out.println("getParameter:token="+map.get("token").toString());
        System.out.println("getParameter:token="+map.get("username").toString());
        String username = session.getQueryString();
        System.out.println("session.getQueryString()="+username);
        String uri = session.getRequestURI().toString();
        System.out.println("session.getRequestURI().toString()="+uri);
    }
    

    获取结果

    在这里插入图片描述

    展开全文
  • webSocket建立连接过程

    千次阅读 2017-06-08 09:41:17
    webSocket是用来解决B/S模式中长连接的问题,实现浏览器和服务器间的消息推送和接收。浏览器先发送http报文,借用了http协议来完成一部分握手,这个http报文中有这么一段信息"Upgrade:websocket",这是告诉服务器...
  • websocket建立长链接

    2022-06-16 15:29:35
    console.log("开始进行连接Connected: " + frame); stompClient.subscribe("/接口路径", function (response) { //4 接收信息 // this.showResponse(JSON.parse(response.body).name); let data = JSON.parse(JSON....
  • 当我使用WebSocket连接到firefox中的服务器时,我发现建立了两个连接,其中一个从不发送任何数据……我的firefox版本是15.0.1在Chrome中运行相同的代码即可,连接一次,只建立一个连接.有人有这样的麻烦吗?有服务器的...
  • WebSocket协议 概念 HTML5开始提供的一种浏览器与服务器进行全双工通讯的网络技术,属于应用层协议。它基于TCP传输协议,并复用HTTP的握手通道... 优点 我用到WebSocket协议仅仅是因为全双工通道,能进行长连接。 ...
  • HTTP连接Websocket连接

    2021-09-02 15:17:20
    要理解HTTP长连接websocket连接的区别,首先要理解一下什么是HTTP的长连接和短连接。 一、HTTP的长连接和短连接区别 首先需要消除一个误解:HTTP协议是基于请求/响应模式的,因此客户端请求后只要服务端给了...
  • 连接过程 —— 握手过程 浏览器、服务器建立TCP连接,三次握手。这是通信的基础,传输控制层,若失败后续都不执行。 TCP连接成功后,浏览器通过HTTP协议向服务器传送WebSocket支持的版本号等信息。(开始前的HTTP...
  • WebSocket协议是使用单个TCP连接进行全双工通信的协议,浏览器与服务器使用一个长连接,可以双向数据传输,且服务器可以主动给浏览器推送数据。Netty是通过给通道绑定的管道,添加一个...
  • 为什么你的websocket只能建立256个连接

    万次阅读 多人点赞 2020-01-18 00:16:04
    WebSocket想必大家都不陌生,当我们的程序需要实时高效的获取后端的返回结果时,除了早期大家用到的前端轮循的机制之外,当前比较简单好用的莫过于WebSocket了。 当然,这篇文章不是WebSocket的科普文,按照惯例:...
  • websocket 连接过程

    2020-03-30 14:43:39
    websocket 连接建立需要借助 http,连接建立完之后就与 http 无关了。 过程 Connection:Connection必须设置为Upgrade,表示客户端希望连接升级 Upgrade:Upgrade必须设置为WebSocket,表示在取得服务器响应之后...
  • 最近接到一个业务需求,需要做一个聊天信息的实时展示的界面,这就需要和服务器端建立webSocket连接,...•尽可能快地建立连接 •客户端只是纯粹的JavaScript,不需要flash •客户端JavaScript必须经过严格的测试 •服务
  • 一、WebSocket是HTML5中的协议,支持持久连接;而Http协议不支持持久连接。 首先HTMl5指的是一系列新的API,或者说新规范,新技术。WebSocket是HTML5中新协议、新API. Http协议本身只有1.0和1.1,也就是所谓的Keep-...
  • C# Websocket连接(wss)

    千次阅读 2022-05-21 23:01:00
    Websocket介绍和wss连接Websocket、Socket、Http、Mqtt之间介绍和区别.
  • websocket 是怎么连接

    2020-12-20 21:55:21
    最近项目新增了一个 websocket 服务,用 nginx 做了一个简单的端口转发,然后调用的时候发现报错:error: Unexpected server response: 426解决方式也很简单,根据第一篇文章的说明,只要增加转发响应头的配置:...
  • websocket 实现长连接原理

    万次阅读 多人点赞 2019-02-21 21:18:24
    一、WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算)首先HTTP有1.1和1.0之说,也就是所谓的keep-alive,把多个HTTP请求合并为一个...
  • WebSocket是HTML5出的协议,,也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算) ajax 轮询 场景再现:客户端:啦啦啦,有没有新信息(Request) 服务端:没有...
  • 主要给大家爱介绍了关于WebSocket的通信过程与实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
  • HTTP的长连接和短连接本质上是TCP...TCP协议是可靠的、面向连接的。 2. 如何理解HTTP协议是无状态的 HTTP协议是无状态的,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。也就是说,打开一个服务
  • WebSocket API是下一代客户端-服务器的异步通信方法。该通信取代了单个的TCP套接字,使用ws或wss协议,可用于任意的客户端和服务器程序。WebSocket目前由W3C进行标准化。WebSocket已经受到Firefox 4、Chrome 4、...
  • 我们回顾第一个流建立时,服务端返回的信息,是不是就有一个id,没错,这个id据我的理解,每次建立websocket连接时,都会为每个连接生成一个独一无二的id,这个id代表了这个连接,所以后续我们会在很多很多地方都...
  • 一、WebSocket协议 ...在建立连接后,WebSocket服务器端和客户端都能主动向对方发送或接收数据,就像Socket一样; 2. WebSocket需要像TCP一样,先建立连接,连接成功后才能相互通信。 WebSo...
  • 浅析websocketwebsocket连接数测试

    万次阅读 2015-08-06 18:45:17
    WebSocket是html5新增加的一种通信协议,我们知道HTTP协议是一种单向的网络协议,在建立连接后,它只允许浏览器客户端向WebServer发出请求资源后,WebServer才能返回相应的数据。即WebServer不能主动的推送数据,...
  • WebSocket是一种双向通信协议,在建立连接后,WebSocket服务器和Browser/UA都能主动的向对方发送或接收数据,就像 Socket一样,不同的是WebSocket是一种建立在Web基础上的一种简单模拟Socket的协议; WebSocke...
  • 主要介绍了springboot+vue实现websocket配置过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 主要介绍了python实现WebSocket服务端过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,091
精华内容 7,236
关键字:

websocket建立连接过程