码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • WebSocket原理


    目录

    1 、WebSocket

    1.1 、t WebSocket  是什么

    1.2  、t WebSocket  请求与发送

     1.3 3 、状态码( Socket.readyState )

     1.4 、 Web Socket  事件

    1.5 、 WebSocket  方法

    2 、WebSocet  通信模型 实例

    3、Webos MTK

    3.1  在什么地方创建 WebSocket ?


    1 、WebSocket

    1.1 、t WebSocket  是什么

            WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。
    WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户
    端推送数据。在 WebSocketAPI 中,浏览器和服务器只需要完成一次握手,两者之间就直
    接可以创建持久性的连接,并进行双向数据传输。
            在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服
    务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。针对我们电视来说,网页就是 UI ,服务器就是 middleware 中间件。

    1.2  、t WebSocket  请求与发送

            浏览器通过 JavaScript 向服务器发出建立 WebSocket 连接的请求,连接建立以后,客
    户端和服务器端就可以通过 TCP 连接直接交换数据。当获取 WebSocket 连接后,可以通过
    send() 方法来向服务器发送数据,并通过 onmessage 事件来接收服务器返回的数据。

     1.3 3 、状态码( Socket.readyState )

    只读属性 readyState 表示连接状态,可以是以下值:
    0 - 表示连接尚未建立。
    1 - 表示连接已建立,可以进行通信。
    2 - 表示连接正在进行关闭。
    3 - 表示连接已经关闭或者连接不能打开。
    只读属性 bufferedAmount 已被 send() 放入正在队列中等待传输,但是还没有发出的
    UTF-8 文本字节数。

     1.4 、 Web Socket  事件

    1.5 、 WebSocket  方法

    2 、WebSocet  通信模型 实例

    A:拨打电话(建立连接)
    var ws = new WebSocket("wss://echo.websocket.org");
    当连接建立成功,触发 open 事件
    ws.onopen = function(evt) {
    console.log("建立连接成功 ...");
    // 连接建立成功以后,就可以使用这个连接对象通信了
    // send 方法发送数据
    ws.send("Hello WebSockets!");
    };

    B:当接收到对方发送的消息的时候,触发 message 事件
    ws.onmessage = function(evt) {
    //通过回调函数的 evt.data 获取对方发送的数据内容
    console.log("接收到消息: " + evt.data);
    // 当不需要通信的时候,可以手动的关闭连接
    // ws.close();
    };
    C:当连接断开的时候触发 close 事件
    ws.onclose = function(evt) {
    console.log("连接已关闭.");
    }

    3、Webos MTK

    由于没有前端 webui 的代码,先以一个 MTK 的调用接口来入手。

    3.1  在什么地方创建 WebSocket ?

     路径 apollo/custom/webui/mtk/MLR53/mmp/js/index.js

    可以看到中间还被 MTK 给封装了一层。
    路径:apollo/custom/webui/mtk/MLR53/libs/base.js
    base.js:封装各个 UI 模块会使用到公共的 JS API,其中重要的 WebSocket 的连接以及监听事
    件的封装,例如:SendData 封装 WebSocket send

    __ws 变量调用 new WebSocket 来创建 Open、close 等接口

    创建好了 ws,在其他 js 文件作为发送端使用如下
    Apollp/custom/webui/mtk/develop/mmp/js/api/api.js 

     

    接收端:
    Apollp/linux_mts/mtk_util/source/open/misc/websocket_handler/webui/USBMM.cpp

     

    会直接执行 Scan 函数

  • 相关阅读:
    vue项目引入bpmn做一款可以拖拽 输入的审核流程图
    第28篇 Spring Boot简介
    中大型商业银行堡垒机升级改造方案!必看!
    中集集团全球港航人工智能高科技领军企业中集飞瞳,工业级高性能港航人工智能产品全球规模应用智能化港口船公司铁路堆场海关大幅提效降本
    CSR/SSR以及同构渲染的区别
    WebKit Insie: Active 样式表
    Linux 进程管理
    golang的垃圾回收算法之八清除和回收
    金仓数据库 KingbaseES 插件identity_pwdexp
    jsp349的校园网招生录入宣传网SSM
  • 原文地址:https://blog.csdn.net/niaohaoge/article/details/126042611
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号