📅  最后修改于: 2023-12-03 15:05:55.553000             🧑  作者: Mango
WebSockets是一种浏览器与服务器进行双向通信的技术。这意味着浏览器可以向服务器发送请求并接收响应,并且服务器也可以向浏览器发送请求并接收响应。WebSockets使用流式数据传输,它们的开销很小,因此可以在实时应用程序中使用。
WebSockets-JavaScript应用程序可以在客户端和服务器之间实现实时双向通信的功能。这种技术已经广泛应用于包括在线游戏、在线聊天、在线拍卖等实时应用程序中。
客户端和服务器之间的WebSocket连接通过browser WebSocket API进行管理。这个API定义了浏览器中WebSocket对象的行为。下面是WebSocket API的几个核心方法:
创建一个新的WebSocket对象并建立到服务器的连接。
参数:
示例:
var ws = new WebSocket('ws://localhost:8080');
将数据发送到服务器。
参数:
示例:
ws.send('Hello Server!');
当WebSocket连接打开时触发的事件,可以在此事件中发送数据到服务器。
参数:
示例:
ws.onopen = function(event) {
console.log('WebSocket连接已打开!');
ws.send('Hello Server!');
}
当从服务器接收到消息时触发的事件。
参数:
示例:
ws.onmessage = function(event) {
console.log('从服务器接收到了消息: ' + event.data);
}
当WebSocket连接关闭时触发的事件。
参数:
示例:
ws.onclose = function(event) {
console.log('WebSocket连接已关闭:' + event.code + ' - ' + event.reason);
}
下面是一个使用WebSocket API的JavaScript应用程序示例4。此应用程序将通过WebSockets在客户端和服务器之间实现实时聊天的功能。
<!DOCTYPE html>
<html>
<head>
<title>WebSocket Chat</title>
<!-- 引入jQuery -->
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
</head>
<body>
<h1>WebSocket Chat</h1>
<div id="chat-box"></div>
<input id="message-input" type="text">
<button id="send-button">Send</button>
<script src="chat.js"></script>
</body>
</html>
var ws = new WebSocket("ws://localhost:8080/chat");
ws.onopen = function(event) {
console.log("WebSocket连接已打开!");
};
ws.onmessage = function(event) {
var message = event.data;
var chatBox = document.querySelector("#chat-box");
chatBox.innerHTML += "<div>" + message + "</div>";
};
ws.onclose = function(event) {
console.log('WebSocket连接已关闭:' + event.code + ' - ' + event.reason);
};
document.querySelector("#send-button").onclick = function(event) {
var messageInput = document.querySelector("#message-input");
var message = messageInput.value;
ws.send(message);
messageInput.value = "";
};
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', function connection(ws) {
console.log("WebSocket连接已建立!");
ws.on('message', function incoming(message) {
console.log('从客户端接收到了消息: %s', message);
var response = message;
wss.clients.forEach(function each(client) {
if (client.readyState === WebSocket.OPEN) {
var message = response;
client.send(message);
}
});
});
ws.on('close', function close() {
console.log('WebSocket连接已关闭!');
});
});
WebSockets-JavaScript应用程序可以在客户端和服务器之间实现实时双向通信的功能。通过WebSocket API,可以轻松地在JavaScript应用程序中使用WebSockets。