Home > Article > Web Front-end > JavaScript and WebSocket: Create an efficient real-time data distribution system
Nowadays, real-time data distribution has become one of the most important business needs of enterprises, and JavaScript and WebSocket have become powerful tools to achieve efficient real-time data distribution. This article will introduce how to use JavaScript and WebSocket technology to build an efficient real-time data distribution system, and provide specific code examples.
1. What is WebSocket?
Before introducing WebSocket, you first need to understand the HTTP protocol. The HTTP protocol is currently the most commonly used application layer protocol. It consists of a request and a response. However, for real-time communication, it has a flaw - it is a "request-response" model protocol.
Under the HTTP protocol, the client must continuously make requests to the server to obtain data, but for real-time data distribution, this method is obviously not feasible. Therefore, WebSocket came into being.
WebSocket is a protocol for full-duplex communication over a single TCP connection. It uses the HTTP protocol for handshaking and uses TCP sockets for data transfer. The WebSocket protocol not only solves the low-latency problem required for real-time communication, but also solves the high-efficiency problem required for server push data.
2. Use JavaScript and WebSocket to achieve real-time data distribution
Use the WebSocket object of JavaScript to create a WebSocket connection. The following is an example:
var socket = new WebSocket('ws://localhost:8080');
In order to handle different events of WebSocket connections, you need to listen to some WebSocket events, including onopen, onmessage, onerror and onclose events . As shown below:
socket.onopen = function () { console.log('WebSocket连接已建立'); }; socket.onmessage = function (event) { console.log('收到消息: ' + event.data); }; socket.onerror = function (error) { console.log('WebSocket错误: ' + error); }; socket.onclose = function (event) { console.log('WebSocket连接已关闭: ' + event.code + ' ' + event.reason); };
When the WebSocket connection is successfully established, the onopen event will be triggered; when a new message is received, the onmessage event will be triggered; when an error occurs in the WebSocket connection, the onerror event will be triggered; When the WebSocket connection is closed, the onclose event will be triggered.
Using JavaScript's WebSocket object, you can send messages to the server. Here is an example:
socket.send('Hello, WebSocket!');
You can use the close() method to close the WebSocket connection. As shown below:
socket.close();
3. Sample code
Use the WebSocket library of Node.js to implement the WebSocket server:
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('收到消息: %s', message); wss.clients.forEach(function each(client) { if (client !== ws && client.readyState === WebSocket.OPEN) { client.send(message); console.log('消息已广播: %s', message); } }); }); ws.on('close', function () { console.log('WebSocket连接关闭'); }); });
Use HTML and JavaScript to implement the WebSocket client:
<!DOCTYPE html> <html> <head> <title>WebSocket实例</title> <meta charset="utf-8"> </head> <body> <input type="text" id="message"> <button onclick="send()">发送</button> <ul id="messages"></ul> </body> <script> var socket = new WebSocket('ws://localhost:8080'); socket.onopen = function () { console.log('WebSocket连接已建立'); }; socket.onmessage = function (event) { console.log('收到消息: ' + event.data); var li = document.createElement("li"); li.textContent = event.data; document.getElementById("messages").appendChild(li); }; socket.onerror = function (error) { console.log('WebSocket错误: ' + error); }; socket.onclose = function (event) { console.log('WebSocket连接已关闭: ' + event.code + ' ' + event.reason); }; function send() { var message = document.getElementById("message").value; socket.send(message); } </script> </html>
4. Summary
By using JavaScript and WebSocket technology, an efficient real-time data distribution system can be built. The WebSocket protocol uses a TCP connection to achieve full-duplex communication, which can solve the inefficiency problem of the HTTP protocol. Sending and receiving messages through WebSocket connections makes it easy to achieve real-time data distribution from server to client. This article provides detailed code examples, I hope it will be helpful to readers.
The above is the detailed content of JavaScript and WebSocket: Create an efficient real-time data distribution system. For more information, please follow other related articles on the PHP Chinese website!