• WebSocket


    WebSocket 是一种在单个TCP连接上进行全双工通信的协议,使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。WebSocket API 也被 W3C 定为标准。

    在WebSocket API 中,通过 HTTP/1.1 协议的 101 状态码进行握手,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行数据传输。

          为了创建 WebSocket 连接,需要通过浏览器发出请求,之后服务器进行回应,这个过程通常称为 “握手” (handshaking)。

          很多网站为了实现推送技术,所用的技术都是轮询。轮询是在特定的时间间隔(如每1秒),由浏览器对服务器发出 HTTP 请求,然后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然而HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。而比较新的技术去做轮询的效果是Comet。这种技术虽然可以双向通信,但依然需要反复给出请求。而且在Comet中,普遍采用的是长链接,也会消耗服务器资源。

         在这种情况下, HTML 定义了WebSocket 协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。

    WebSocket 特点

         较少的控制开销,在连接创建后,服务器和客户端之间交换数据时,用于协议控制的数据包头部相对较小。

         更强的实时性。由于协议是全双工的,所以服务器可以随时主动给客户端下发数据。

         保持连接状态。与 HTTP 不同的是,WebSocket 需要先创建连接,这就使得其成为一种有状态的协议,之后通信时可以省略部分状态信息。而 HTTP 请求可能需要在每个请求都携带状态信息(如身份认证等)。

         更好的二进制支持。WebSocket 定义了二进制帧,相对 HTTP,可以更轻松地处理二进制内容。

         可以支持扩展。WebSocket定义了二进制帧,相对HTTP,可以更轻松地处理二进制内容。

    示例

    WebSockets 它可以在用户浏览器和服务器之间打开交互式通信会话。使用此API,可以向服务器发送信息并接收事件驱动的响应,而无需通过轮询服务器的方式以获得响应。

    // 创建WebSocket连接.
    const socket = new WebSocket('ws://localhost:8080');
     
    // 连接成功触发
    socket.addEventListener('open', function (event) {
        socket.send('Hello Server!');
    });
     
    // 监听消息
    socket.addEventListener('message', function (event) {
        console.log('Message from server ', event.data);
    });
  • 相关阅读:
    201771030123-王爽 实验一 软件工程准备—阅读《现代软件工程—构建之法》并提问
    《面向对象程序设计课程学习进度条》
    201771010132-徐思 实验四 软件项目案例分析
    201771010132-徐思 实验三 结对项目-《西北师范大学疫情防控信息系统》
    201771010132-徐思 实验一 软件工程准备-浏览《构建之法》
    徐思201771010132 《面向对象程序设计(java)》课程学习总结
    徐思 201771010132
    徐思201771010132《面向对象程序设计(java)》第十六周学习总结
    徐思201771010132《面向对象程序设计(java)》第十五周学习总结
    徐思201771010132《面向对象程序设计(java)》第十四周学习总结
  • 原文地址:https://www.cnblogs.com/zhishiyv/p/15945927.html
Copyright © 2020-2023  润新知