webScoke api 介绍

发现宝藏

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。


WebSocket API 是一种基于 Web 的通信协议,它为浏览器和服务器之间提供了全双工(双向)通信通道,使得客户端和服务器可以在单个 TCP 连接上进行双向数据交换。WebSocket 在实时通信应用中尤其重要,例如在线聊天、实时游戏、股票价格更新、协作编辑等场景。

WebSocket API 简介

WebSocket API 允许浏览器和服务器之间建立一个持久的、双向的通信连接。WebSocket 连接一旦建立,数据可以在浏览器与服务器之间自由地流动,直到连接被关闭。

WebSocket 协议的特点:

  • 全双工通信:WebSocket 提供双向的、实时的通信,服务器和客户端都可以随时发送消息。
  • 低延迟:与传统的 HTTP 请求-响应模型不同,WebSocket 的通信不需要每次都重新建立连接,从而减少了通信延迟。
  • 单一连接:WebSocket 使用单一的 TCP 连接来进行通信,这意味着可以节省带宽和计算资源。

WebSocket API 使用

WebSocket API 提供了简单的 JavaScript 接口,客户端通过该接口与 WebSocket 服务器进行交互。

1. 创建 WebSocket 连接

WebSocket 对象是建立与服务器连接的核心,它通过 WebSocket 构造函数来创建一个 WebSocket 实例。连接的建立需要指定一个服务器地址,该地址通常是一个以 ws://wss://(加密版本)开头的 URL。

javascript 复制代码
let socket = new WebSocket('wss://example.com/socket');  // 使用 wss 进行加密连接

2. WebSocket 事件

WebSocket 对象触发多个事件,开发者可以监听这些事件来处理连接、消息接收、错误等情况。

  • open:连接成功建立时触发。
  • message:收到服务器发送的消息时触发。
  • error:发生错误时触发。
  • close:连接关闭时触发。
示例代码
javascript 复制代码
let socket = new WebSocket('wss://example.com/socket');

// 监听连接成功事件
socket.onopen = function(event) {
  console.log('WebSocket is open now.');
  // 可以在连接成功后发送消息
  socket.send('Hello, server!');
};

// 监听接收到消息事件
socket.onmessage = function(event) {
  console.log('Message from server:', event.data);
};

// 监听错误事件
socket.onerror = function(error) {
  console.error('WebSocket Error:', error);
};

// 监听连接关闭事件
socket.onclose = function(event) {
  if (event.wasClean) {
    console.log(`Closed cleanly, code=${event.code}, reason=${event.reason}`);
  } else {
    console.error('Connection closed unexpectedly');
  }
};

3. 发送消息

一旦 WebSocket 连接成功建立(即触发 open 事件),你可以使用 send() 方法向服务器发送数据。WebSocket 允许发送文本数据(如字符串)和二进制数据(如 Blob 或 ArrayBuffer)。

javascript 复制代码
socket.send('Hello, server!');

4. 接收消息

当 WebSocket 服务器发送消息时,客户端会触发 message 事件,并可以通过 event.data 获取到消息内容。

javascript 复制代码
socket.onmessage = function(event) {
  console.log('Received:', event.data);
};

5. 关闭连接

WebSocket 连接可以通过 close() 方法主动关闭,也可以等待服务器主动关闭连接。关闭连接时,可以指定一个状态码和原因(可选)。

javascript 复制代码
socket.close(1000, 'Done with the session');
  • 1000:表示正常关闭连接的状态码。
  • 'Done with the session':可以提供关闭的原因。

6. 状态码

WebSocket 连接关闭时,可以使用以下标准状态码来描述连接的关闭原因:

  • 1000 - 正常关闭连接。
  • 1001 - 服务器关闭连接。
  • 1002 - 协议错误。
  • 1003 - 服务器收到不支持的消息类型。
  • 1006 - 连接意外关闭,通常是由于网络问题或客户端错误。

WebSocket 连接的生命周期

  1. 连接建立 :客户端通过 new WebSocket() 请求连接服务器,触发 open 事件。
  2. 通信进行 :客户端和服务器可以通过 send()message 事件相互发送消息,保持通信。
  3. 关闭连接 :通信完成后,客户端或服务器可以调用 close() 方法关闭连接。

WebSocket 与传统 HTTP 的对比

特性 WebSocket HTTP
连接方式 持久连接(保持开放) 短连接(每个请求都会新建连接)
双向通信 支持全双工通信(客户端和服务器可以同时发送消息) 单向通信(客户端请求,服务器响应)
延迟 较低 较高,需每次建立连接
适用场景 实时通信(在线聊天、股票数据更新、多人游戏等) 常规的请求-响应式应用
协议 ws://wss:// http://https://

适用场景

WebSocket 适用于需要实时、高效、双向通信的应用场景,以下是一些常见的使用场景:

  1. 实时聊天应用:WebSocket 允许即时消息传输,不需要轮询。
  2. 在线多人游戏:低延迟的双向通信是多人在线游戏中的关键需求。
  3. 金融应用(如股票/外汇实时行情):WebSocket 提供了一个快速和可靠的通道,用于实时接收价格更新。
  4. 协作工具:例如 Google Docs 或其他协作编辑工具,可以实时同步编辑内容。
  5. 物联网(IoT):WebSocket 可以在设备与服务器之间提供持久的通信通道,用于实时数据传输。

安全性

WebSocket 支持加密通信,使用 wss:// 协议(WebSocket Secure),类似于 HTTPS。ws://wss:// 之间的区别是,wss:// 使用 SSL/TLS 加密,确保数据的传输安全。与 HTTP 不同,WebSocket 的加密和安全性更多依赖于底层的 TLS/SSL 协议。

相关推荐
Beekeeper&&P...1 小时前
AddressBookController
java·前端·网络
今天也要暴富1 小时前
CSS Grid 布局:属性及使用详解
前端·css
前端熊猫2 小时前
组件十大传值
前端·javascript·vue.js
oumae-kumiko2 小时前
【JS/TS鼠标气泡跟随】文本提示 / 操作提示
前端·javascript·typescript
YG·玉方2 小时前
键盘常见键的keyCode和对应的键名
前端·javascript·计算机外设
梦屿千寻!!2 小时前
Axios和Ajax的区别
前端
iOS开发的小学生2 小时前
鸿蒙app封装 axios post请求失败问题
前端·harmonyos·鸿蒙开发
我码玄黄3 小时前
在THREEJS中加载3dtile模型
前端·javascript·3d·threejs
文浩(楠搏万)3 小时前
Java Spring Boot 项目中嵌入前端静态资源:完整教程与实战案例
java·服务器·前端·spring boot·后端·nginx·github
悠悠华3 小时前
使用layui的table提示Could not parse as expression(踩坑记录)
前端·javascript·layui