📅  最后修改于: 2023-12-03 15:21:08.079000             🧑  作者: Mango
WebSockets 是 HTML5 开始支持的一种全新协议,它实现了客户端和服务器端的双向通信,可以用于实时数据传输和通讯应用。
在传统的 HTTP
协议中,客户端请求一次,服务器端只能做出一次响应,整个请求过程是一个单向的,无法实现实时数据传输和通信。
HTTP
请求每次都需要重新建立连接,WebSockets
可以实现建立一次连接后实时通信,相应速度更快。WebSockets
的标准化协议由 IETF
维护,具有跨平台、跨语言的特性,易于开发和维护。WebSockets
建立在 HTTP
协议之上,通过特定的 Upgrade
请求进行升级,之后就可以使用 WebSockets
协议进行双向数据通信。
在建立连接后,客户端和服务器端都可以主动向对方发送消息,消息可以是字符串或二进制数据。
在客户端可以使用原生 JavaScript
,或者第三方库 Socket.IO
来实现 WebSockets
连接。
var ws = new WebSocket("wss://example.com/path");
ws.onopen = function() {
console.log("连接已建立...");
ws.send("Hello Server!");
};
ws.onmessage = function(event) {
console.log("接收到来自服务器的消息:", event.data);
};
ws.onclose = function() {
console.log("连接已关闭...");
};
var socket = io("wss://example.com/path");
socket.on("connect", function() {
console.log("连接已建立...");
socket.emit("message", "Hello Server!");
});
socket.on("message", function(data) {
console.log("接收到来自服务器的消息:", data);
});
socket.on("disconnect", function() {
console.log("连接已关闭...");
});
在服务器端,可以使用 Node.js
自带的 ws
模块来实现 WebSockets
连接。
const WebSocket = require("ws");
const wss = new WebSocket.Server({ port: 8080 });
wss.on("connection", function(ws) {
console.log("客户端已连接...");
ws.on("message", function(message) {
console.log(`接收到来自客户端的消息: ${message}`);
ws.send("Hello Client!");
});
ws.on("close", function() {
console.log("客户端已断开连接...");
});
});
WebSockets
是实现双向通信的一个重要技术,在实时数据传输和通讯应用中具有广泛的应用。通过客户端和服务器端的配合实现双向通信,可以提高应用的效率和用户体验。