首页 > 其他分享 >WebSocket API 解析:从入门到精通

WebSocket API 解析:从入门到精通

时间:2023-10-18 18:33:20浏览次数:31  
标签:WebSocket 入门 示例 API ws console 连接 服务端

WebSocket API 详解

WebSocket API 是 HTML5 标准化之后的一项 API,它可用于建立客户端和服务器之间的双向通信连接。

WebSocket API 解析:从入门到精通_api

WebSocket 构造函数

用于创建并返回一个 WebSocket 对象。

示例:

//创建WebSocket对象,并指定服务端地址
var ws = new WebSocket("ws://localhost:8080");

WebSocket.readyState

表示 WebSocket 连接的状态。

示例:

if (ws.readyState === WebSocket.OPEN) {
    //connection is open
}

WebSocket.bufferedAmount

用于获取 WebSocket 对象在发送缓冲区中的字节数。

示例:

var bufferedAmount = ws.bufferedAmount;

WebSocket.extensions

用于获取 WebSocket 对象所用的扩展。

示例:

var extensions = ws.extensions;

WebSocket.protocol

用于获取 WebSocket 对象使用的协议。

示例:

var protocol = ws.protocol;

WebSocket.url

用于获取 WebSocket 连接的 URL。

示例:

var url = ws.url;

WebSocket.send()

用于向服务器发送数据。

示例:

ws.send("Hello, server!");

WebSocket.close()

用于关闭 WebSocket 连接。

示例:

ws.close();

WebSocket.onerror

用于指定一个函数在 WebSocket 连接发生错误时被调用。

示例:

ws.onerror = function(error) {
    console.log(error);
};

WebSocket.onopen

用于指定一个函数在WebSocket连接成功建立时被调用

示例:

ws.onopen = function() {
    console.log("Connection open!");
};

WebSocket.onclose

用于指定一个函数在 WebSocket 连接关闭时被调用。

示例:

ws.onclose = function() {
    console.log("Connection closed!");
};

WebSocket.onmessage

用于指定一个函数在 WebSocket 接收到服务器发送的数据时被调用。

示例:

ws.onmessage = function(event) {
    console.log("Data received: " + event.data);
};

以上就是WebSocket对象的所有API以及相应的示例。

前端实践 WebSocket

Nodejs 起一个 WebSocket 服务

我们需要使用 Nodejs 去起一个 WebSocket 服务,具体代码如下:

// 引入nodejs-websocket
const ws = require('nodejs-websocket');
// 定义监听的host地址跟port端口
const HOST = '127.0.0.1'
const PORT = 3001;
// 创建ws服务
const service = ws.createServer((conn) => {
  conn.on('text', (message) => {
    // 当收到消息的时候就开始定时推送
    console.log('message', message);
    setInterval(() => {
      // 随机推送message里的内容
      conn.sendText(`Now is ${new Date().getTime()}`);
    }, 1 * 1000);
  });
}).listen(PORT, HOST, () => {
  console.log('service---success');
});

页面编写

我们需要创建一个 index.html,并写入以下代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script>
    window.onload = () => {
        if ('WebSocket' in window) {
            // 创建websocket连接
            let ws = new WebSocket('ws://127.0.0.1:3001/websocket');
            // 成功连接的时候推送一条消息,此时服务端就可以开始推送数据了
            ws.onopen = () => {
                console.log('websocket success---');
                ws.send('success');
            }
            ws.onmessage = (message) => {
                let data = message.data;
                console.log('get websocket message---', data);
            }
            ws.onerror = () => {
                console.error('websocket fail');
            }
        } else {
            console.error('dont support websocket');
        };
    };
</script>

</head>
<body>
  
</body>
</html>

启动页面

在 index.html 右键,并打开此文件:

WebSocket API 解析:从入门到精通_api_02

查看效果

可以看到后端先接收到前端的信息,open 建立成功:

WebSocket API 解析:从入门到精通_程序员_03

然后建立连接后,后端一直在为前端输出信息:

WebSocket API 解析:从入门到精通_api_04

调试 WebSocket 服务

如果你正在编写 WebSocket 服务并需要进行调试,可以使用 Apifox 来调试 WebSocket 服务~

谷歌插件

Apifox 有 Web端 和 客户端,如果你使用的是 Web端,想要调试本地服务,需要安装 Apifox 的 谷歌插件。

下载地址:Apifox 谷歌浏览器插件

WebSocket API 解析:从入门到精通_程序员_05

新建 WebSocket 请求

WebSocket 是客户端和服务端之间的长链接,因此你需要在 Apifox 中创建一个 WebSocket 请求,以便跳转到 Apifox 界面并填写相应的请求信息

  • 点击创建按钮
  • 填入 WebSocket 服务的地址
  • 可以选择填写 Message 和 Params

WebSocket API 解析:从入门到精通_WebSocket_06

Message 和 Params

Message

在 Message 中,你可以填写要传递到服务端的信息。服务端将接收你发送的信息。

WebSocket API 解析:从入门到精通_程序员_07

Params

在传输过程中,你也可以携带参数,可以通过在地址上添加查询参数完成,可以携带的数据类型包括:

  • string
  • integer
  • number
  • array

WebSocket API 解析:从入门到精通_api_08

保存请求

写完所需信息之后,可以点击 保存按钮,进行保存,方便下次可继续调用。

WebSocket API 解析:从入门到精通_程序员_09

连接、发送 WebSocket 请求

连接 WebSocket 服务

我们想要跟服务端进行 WebSocket 通信,就需要先建立一个 WebSocket 连接,我们只需要点击 连接 按钮。

WebSocket API 解析:从入门到精通_api_10

连接成功之后,Apifox 有成功的提示:

WebSocket API 解析:从入门到精通_WebSocket_11

服务端那边也会因为连接成功,而做出响应。

发送 WebSocket 请求

接着我们就可以跟服务端进行 WebSocket 通信了。

我们可以使用 Apifox 点击发送按钮向服务端进行发送 Message、Params。

WebSocket API 解析:从入门到精通_程序员_12

与 WebSocket 服务通信

发送之后,服务端也可以向客户端发送信息,例如我这里,我设置服务端每秒向客户端发送当时的时间戳~

这就是 Apifox 的 WebSocket 功能,非常方便。

WebSocket API 解析:从入门到精通_api_13

知识扩展:

标签:WebSocket,入门,示例,API,ws,console,连接,服务端
From: https://blog.51cto.com/u_15964533/7921425

相关文章

  • Eolink Apikit 如何进行自动化测试?
    自动化测试是一种软件测试方法,利用自动化工具和脚本来执行测试用例,以验证软件应用程序的功能、性能、稳定性等特性。自动化测试的主要目的是提高测试效率、减少测试成本,并确保软件的质量和可靠性。作为测试人员,在进行比较大的项目时,使用自动化测试能帮助我们事半功倍地完成测试工......
  • WebRTC 简单入门与实践
     一、前言WebRTC技术已经广泛在各个行业及场景中被应用,但对多数开发者来说,实时音视频及相关技术却是比较不常接触到的。做为一名Web开发者,WebRTC这块的概念着实花了不少时间才搞明白,一是WebRTC本身有较多的独有概念,二是虽然带“Web”字样,但依赖底层概念和网络却是Web......
  • Burp Suite Extend APIs Notes
    Brup插件的开发,大体流程就是通过在自己创建的BurpExtender类上实现不同功能接口。所以,你想要开发出什么功能,就去找一下Burp上能提供什么接口,然后实现这个接口所需的方法即可。想要快速的开发的Burp插件、了解一下它的APIs是有必要的。下面我将梳理一下它提供出来的APIs。todoA......
  • 快速入门运维:成为一名高效运维工程师的关键步骤
    引言:运维(OperationsandMaintenance)是现代技术领域中至关重要的角色之一。而作为一名运维工程师,需要负责维护和管理软件系统、网络基础设施和服务器等关键组件。本篇博客将介绍如何快速入门运维,成为一名高效的运维工程师。学习基本概念和原理:在开始之前,了解运维的基本概念和原理......
  • ElasticSearch Java API 基本操作
    前言ElasticSearchJavaAPI是ES官方在8.x版本推出的新javaapi,也可以适用于7.17.x版本的es。本文主要参考了相关博文,自己手动编写了下相关操作代码,包括更新mappings等操作的java代码。代码示例已上传github。版本elasticsearch版本:7.17.9,修改/elasticsearch-7.17.9/config/......
  • TDengine 资深研发整理:基于 SpringBoot 多语言实现 API 返回消息国际化
    作为一款在Java开发社区中广受欢迎的技术框架,SpringBoot在开发者和企业的具体实践中应用广泛。具体来说,它是一个用于构建基于Java的Web应用程序和微服务的框架,通过简化开发流程、提供约定大于配置的原则以及集成大量常用库和组件,SpringBoot能够帮助开发者更快速、更高效地......
  • [911] Read Data from Google Sheets into Pandas without the Google Sheets API (.g
    ref:ReadDatafromGoogleSheetsintoPandaswithouttheGoogleSheetsAPIimportpandasaspdsheet_id="1XqOtPkiE_Q0dfGSoyxrH730RkwrTczcRbDeJJpqRByQ"sheet_name="Sheet1"url=f"https://docs.google.com/spreadsheets/d/{sheet......
  • Qt SQL API相关操作
    作者:苏丙榅链接:https://subingwen.cn/qt/qt-db/?highlight=sql来源:爱编程的大丙著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。另外,推荐野火关于sqlite 的文档:https://doc.embedfire.com/linux/qt/embed/zh/latest/ebf_qt/senior/qt_sqlite.html......
  • 在CMake中配置使用Intel One API的注意事项
    环境IntelOneAPI2023.2CMake3.27.7VisualStudio2022Community(withC++desktop)样例程序代码1#include<iostream>23intmain()4{5std::cout<<"Hello,CMake!"<<std::endl;6std::cin.get();7return0;8......
  • Flask一个文件快速起一个API接口服务
    fromflaskimportFlask,request,jsonifyapp=Flask(__name__)@app.route('/my_endpoint',methods=['POST'])defhandle_post_request():#在这里可以处理接收到的POST请求数据data=request.get_json()#获取POST请求中的JSON数据#返回指定内容......