前言:
博主旨在记录,对应各种问题记录在案与同志们分享
借鉴与mdn文档(WebSocket - Web API 接口参考 | MDN)
什么是webSocket? 有什么优势?
WebSocket 是一种用于在客户端和服务器之间进行双向通信的协议。它提供了一种实时、高效、持久的连接方式,允许服务器主动向客户端推送数据,而不需要客户端发起请求。
在 JavaScript 中,可以使用 WebSocket API 来创建和管理 WebSocket 连接。
一、websocket与HTTP的区别
HTTP协议是一种无状态协议,每次请求都需要重新建立连接。而websocket协议则是一种长连接协议,可以保持客户端和服务器之间的连接状态。这就使得websocket具有实时性更好、传输效率更高等优势。
二、websocket实现方式
在前端,可以使用浏览器原生的WebSocket对象来进行websocket通信;而在后端,则需要使用相应语言提供的WebSocket库来实现。比如Java中可以使用Spring WebSocket、Netty等库来进行开发。
三、websocket应用场景
1.实时数据展示:对于需要实时展示数据的场景,使用websocket可以比轮询等方式更加高效地获取数据。
2.物联网设备监控:物联网设备通常需要定时上传数据,而使用websocket可以使得服务器能够即时接收到数据。
四、使用
webSocket事件 webSocket方法
open (连接建立时触发) send() 使用连接发送数据
message (客户端接收服务端数据时触发()
error (通信发生错误触发)
close (连接关闭时触发)
接下来是代码演示
创建 WebSocket 对象:
const socket = new WebSocket('ws://example.com/socket');
// 或者使用加密的 SSL 连接
// const socket = new WebSocket('wss://example.com/socket');
监听 WebSocket 事件:
socket.addEventListener('open', () => {
// 连接成功时触发
console.log('WebSocket 连接已建立');
});
socket.addEventListener('message', (event) => {
// 收到服务器发送的消息时触发
const message = event.data;
console.log('收到消息:', message);
});
socket.addEventListener('close', () => {
// 连接关闭时触发
console.log('WebSocket 连接已关闭');
});
socket.addEventListener('error', (error) => {
// 发生错误时触发
console.error('WebSocket 错误:', error);
});
发送和接收数据:
// 发送消息给服务器
socket.send('Hello, server!');
// 关闭连接
socket.close();
缺点
1.服务器压力过大:由于websocket连接是长连接,如果同时有大量客户端连接服务器,则可能会导致服务器压力过大。
2.数据安全问题:由于websocket通信是全双工的,可能会存在窃取数据的风险。
最后
对于一些特定的环境和场景可以优先考虑webSocket,比如局域网等等,它对于前端来说也是很好的伙伴
博主前端菜鸟,说法比较浅显 如有不足请前辈指正,交流学习