### WebSocket是什么?
WebSocket是一种在单个TCP连接上提供全双工通信的协议,允许客户端和服务器之间进行实时通信。与传统的HTTP请求-响应模型不同,WebSocket允许服务器主动向客户端推送数据,从而实现更快的实时通信。
### WebSocket实现步骤
下面是实现WebSocket的步骤,以及每一步需要做什么:
| 步骤 | 描述 |
| ---- | ---- |
| 1. 创建WebSocket对象 | 在客户端和服务器端分别创建WebSocket对象 |
| 2. 建立连接 | 在客户端和服务器端分别建立与WebSocket服务器的连接 |
| 3. 发送和接收消息 | 客户端和服务器端之间可以相互发送和接收消息 |
### 客户端代码示例
#### 创建WebSocket对象
在客户端创建WebSocket对象并连接至服务器:
```javascript
// 创建WebSocket对象,传入服务器地址
const socket = new WebSocket('ws://localhost:8080');
// 监听连接建立事件
socket.onopen = function() {
console.log('WebSocket连接已建立');
};
// 监听接收消息事件
socket.onmessage = function(event) {
console.log('接收到消息:', event.data);
};
// 监听连接关闭事件
socket.onclose = function() {
console.log('WebSocket连接已关闭');
};
```
#### 发送消息
客户端发送消息给服务器:
```javascript
// 发送消息到服务器
socket.send('Hello WebSocket Server!');
```
### 服务器端代码示例
#### 创建WebSocket对象
在服务器端创建WebSocket对象并监听连接:
```javascript
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
// 监听连接事件
wss.on('connection', function connection(ws) {
console.log('客户端已连接');
// 监听客户端消息事件
ws.on('message', function incoming(message) {
console.log('接收到消息:', message);
});
// 发送消息给客户端
ws.send('Hello WebSocket Client!');
});
```
#### 建立连接
服务器端等待客户端连接:
```javascript
wss.on('connection', function connection(ws) {
console.log('客户端已连接');
});
```
#### 接收消息
服务器端接收客户端发来的消息并处理:
```javascript
ws.on('message', function incoming(message) {
console.log('接收到消息:', message);
});
```
### 结论
通过上述代码示例,我们可以看到WebSocket是一种基于TCP协议实现的全双工通信协议,能够在客户端和服务器端实现实时通信。相较于传统的HTTP请求-响应模型,WebSocket更适合需要实时推送数据的应用场景。希望这篇文章能帮助你理解WebSocket是基于TCP协议的原因以及如何实现WebSocket通信。如果有任何疑问,欢迎提出。