引言
WebSocket 是一种在单个 TCP 连接上进行全双工通讯的协议。它允许服务器和客户端之间进行实时数据交换,是构建实时通信应用的关键技术。HTML5 提供了原生的 WebSocket API,使得开发者可以轻松实现客户端和服务器之间的实时通信。本文将带你从零开始,学习 HTML5 WebSocket 编程,并通过一个简单的示例教你如何实现实时通信。
一、WebSocket 基础知识
1.1 什么是 WebSocket?
WebSocket 是一种网络通信协议,它允许在单个 TCP 连接上进行全双工通信。这意味着客户端和服务器可以同时发送和接收数据,而不需要为每次通信建立新的连接。
1.2 WebSocket 协议特点
- 全双工通信:客户端和服务器可以同时发送和接收数据。
- 低延迟:WebSocket 连接一旦建立,数据传输速度更快,延迟更低。
- 支持跨域:通过 CORS(跨源资源共享)可以支持跨域通信。
1.3 WebSocket 工作原理
WebSocket 连接通过 HTTP/HTTPS 协议进行握手,握手成功后,服务器和客户端就可以通过 WebSocket 协议进行通信。
二、HTML5 WebSocket API
2.1 WebSocket 对象
WebSocket 对象是 HTML5 提供的原生 API,用于创建 WebSocket 连接。
var ws = new WebSocket('ws://localhost:8080');
2.2 WebSocket 属性和方法
- 属性:
readyState:表示 WebSocket 连接状态。url:表示 WebSocket 连接的 URL。binaryType:表示接收数据的类型。
- 方法:
open():连接成功后调用。send():发送数据。close():关闭连接。onopen():连接成功后的回调函数。onmessage():接收到数据后的回调函数。onclose():连接关闭后的回调函数。onerror():发生错误时的回调函数。
三、WebSocket 实战示例
3.1 示例:简单聊天室
3.1.1 服务器端
使用 Node.js 和 WebSocket 库(如 ws)搭建 WebSocket 服务器。
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', function connection(ws) {
ws.on('message', function incoming(message) {
console.log('received: %s', message);
});
ws.send('something');
});
3.1.2 客户端
使用 HTML5 和 JavaScript 实现 WebSocket 客户端。
<!DOCTYPE html>
<html>
<head>
<title>WebSocket 聊天室</title>
</head>
<body>
<input type="text" id="input" placeholder="输入内容...">
<button onclick="sendMessage()">发送</button>
<div id="output"></div>
<script>
var ws = new WebSocket('ws://localhost:8080');
ws.onopen = function() {
console.log('连接成功');
};
ws.onmessage = function(event) {
document.getElementById('output').innerHTML += event.data + '<br>';
};
ws.onerror = function(error) {
console.log('WebSocket 错误:' + error);
};
ws.onclose = function() {
console.log('连接关闭');
};
function sendMessage() {
var input = document.getElementById('input').value;
ws.send(input);
document.getElementById('input').value = '';
}
</script>
</body>
</html>
3.2 示例:实时股票信息
使用 WebSocket 实现实时股票信息展示。
3.2.1 服务器端
使用 Node.js 和 WebSocket 库搭建 WebSocket 服务器,并模拟股票数据。
3.2.2 客户端
使用 HTML5 和 JavaScript 实现WebSocket客户端,并展示实时股票信息。
四、总结
本文介绍了 HTML5 WebSocket 编程的基础知识、API 和实战示例。通过学习本文,你可以轻松上手 HTML5 WebSocket 编程,并实现实时通信应用。希望本文对你有所帮助!
