WebSocket 是一种网络通信协议,它实现了客户端与服务器之间的全双工通信。与传统的 HTTP 协议不同,WebSocket 允许服务器主动向客户端发送消息,这对于实时应用(如在线聊天、股票交易、游戏等)来说非常重要。
WebSocket 的工作原理如下:
101 Switching Protocols
状态码,表示同意建立 WebSocket 连接。WebSocket 相比 HTTP 协议有以下优点:
实现 WebSocket 通信通常需要使用 JavaScript 和后端语言(如 Node.js、Python、Java 等)。以下是一个简单的 WebSocket 实现示例:
// 创建 WebSocket 连接
const socket = new WebSocket('ws://localhost:8080');
// 连接打开时触发
socket.onopen = function(event) {
console.log('连接成功');
};
// 接收到服务器消息时触发
socket.onmessage = function(event) {
console.log('收到消息:', event.data);
};
// 连接关闭时触发
socket.onclose = function(event) {
console.log('连接关闭');
};
// 连接出错时触发
socket.onerror = function(error) {
console.log('连接出错:', error);
};
// 发送消息到服务器
function sendMessage(message) {
socket.send(message);
}
const WebSocket = require('ws');
// 创建 WebSocket 服务器实例
const wss = new WebSocket.Server({ port: 8080 });
// 监听连接事件
wss.on('connection', function(socket) {
console.log('新连接');
// 监听接收消息事件
socket.on('message', function(message) {
console.log('收到消息:', message);
});
// 发送消息到客户端
function sendMessageToClient(message) {
socket.send(message);
}
// 每隔1秒向客户端发送消息
setInterval(() => {
sendMessageToClient('服务器消息');
}, 1000);
});
WebSocket 提供了以下 API:
WebSocket()
:创建一个新的 WebSocket 连接。open()
:连接成功打开时触发。onmessage
:接收到服务器消息时触发。send()
:向服务器发送消息。close()
:关闭 WebSocket 连接。WebSocket 广泛应用于各种实时应用,如在线聊天、股票交易、游戏等。以下是一个简单的在线聊天示例:
// 创建 WebSocket 连接
const socket = new WebSocket('ws://localhost:8080');
// 连接打开时触发
socket.onopen = function(event) {
console.log('连接成功');
};
// 接收到服务器消息时触发
socket.onmessage = function(event) {
const message = document.createElement('div');
message.textContent = '服务器:' + event.data;
document.body.appendChild(message);
};
// 连接关闭时触发
socket.onclose = function(event) {
console.log('连接关闭');
};
// 连接出错时触发
socket.```
socket.onerror = function(error) {
console.log('连接出错:', error);
};
// 发送消息到服务器
function sendMessage(message) {
socket.send(message);
}
// 在输入框中添加发送按钮
const input = document.createElement('input');
input.type = 'text';
input.placeholder = '输入消息';
input.addEventListener('input', function(event) {
sendMessage(event.target.value);
});
document.body.appendChild(input);
const WebSocket = require('ws');
// 创建 WebSocket 服务器实例
const wss = new WebSocket.Server({ port: 8080 });
// 监听连接事件
wss.on('connection', function(socket) {
console.log('新连接');
// 监听接收消息事件
socket.on('message', function(message) {
console.log('收到消息:', message);
// 广播消息给所有客户端
wss.clients.forEach(function each(client) {
if (client !== socket && client.readyState === WebSocket.OPEN) {
client.send(message);
}
});
});
// 发送消息到客户端
function sendMessageToClient(message) {
socket.send(message);
}
// 每隔1秒向客户端发送消息
setInterval(() => {
sendMessageToClient('服务器消息');
}, 1000);
});
WebSocket 协议本身是安全的,但你需要确保 WebSocket 连接是通过 HTTPS 协议建立的,以防止中间人攻击。在 Node.js 中,你可以使用 wss
模块来创建一个安全的 WebSocket 服务器。
WebSocket 是一种强大的网络通信协议,它允许服务器和客户端之间进行实时、双向通信。在 WebSocket 连接中,服务器可以主动向客户端发送消息,这对于实时应用来说非常重要。通过使用 JavaScript 和后端语言,你可以轻松实现 WebSocket 通信。在实际应用中,WebSocket 已被广泛应用于在线聊天、股票交易、游戏等领域。