解释 Web Socket API 的概念
主题
JavaScript网络
在GitHub上编辑
TL;DR
WebSocket API 提供了一种在客户端和服务器之间打开持久连接的方式,允许进行实时的双向通信。与基于请求-响应的 HTTP 不同,WebSocket 实现了全双工通信,这意味着客户端和服务器都可以独立地发送和接收消息。这对于聊天应用程序、实时更新和在线游戏等应用程序特别有用。
以下示例使用 Postman 的 WebSocket 回显服务来演示 WebSockets 的工作原理。
// Postman's echo server that will echo back messages you sendconst socket = new WebSocket('wss://ws.postman-echo.com/raw');// Event listener for when the connection is opensocket.addEventListener('open', function (event) {socket.send('Hello Server!'); // Sends the message to the Postman WebSocket server});// Event listener for when a message is received from the serversocket.addEventListener('message', function (event) {console.log('Message from server ', event.data);});
什么是 WebSocket API?
WebSocket API 是一种技术,它提供了一种在客户端(通常是 Web 浏览器)和服务器之间建立持久的、低延迟的、全双工通信通道的方式。这与传统的 HTTP 请求-响应模型不同,后者是无状态的,并且需要为每个请求建立新的连接。
关键特性
- 全双工通信:客户端和服务器都可以独立地发送和接收消息。
- 低延迟:持久连接减少了为每条消息建立新连接的开销。
- 实时更新:非常适合需要实时数据的应用程序,例如聊天应用程序、实时体育更新和在线游戏。
它是如何工作的
- 连接建立:客户端通过向服务器发送握手请求来启动 WebSocket 连接。
- 握手响应:服务器使用握手响应进行响应,如果成功,则建立连接。
- 数据交换:客户端和服务器现在可以通过已建立的连接独立地发送和接收消息。
- 连接关闭:当不再需要连接时,客户端或服务器都可以关闭连接。
使用示例
这是一个关于如何在 JavaScript 中使用 WebSocket API 的基本示例,使用 Postman 的 WebSocket Echo Service。
// Postman's echo server that will echo back messages you sendconst socket = new WebSocket('wss://ws.postman-echo.com/raw');// Event listener for when the connection is opensocket.addEventListener('open', function (event) {console.log('Connection opened');socket.send('Hello Server!'); // Sends the message to the Postman WebSocket server});// Event listener for when a message is received from the serversocket.addEventListener('message', function (event) {console.log('Message from server ', event.data);});// Event listener for when the connection is closedsocket.addEventListener('close', function (event) {console.log('Connection closed');});// Event listener for when an error occurssocket.addEventListener('error', function (event) {console.error('WebSocket error: ', event);});
用例
- 聊天应用程序:用户之间的实时消息传递。
- 实时更新:股票价格、体育比分或新闻更新。
- 在线游戏:玩家之间的实时互动。
- 协作工具:实时文档编辑或白板。