WebSocket是一种基于单个TCP连接的全双工通信协议,支持浏览器与服务器持续连接并互相主动发消息,适用于聊天、实时通知等场景;其通过HTTP Upgrade握手建立长连接,区别于HTTP的请求-响应模式;前端使用new WebSocket()创建连接,监听open、message、close、error事件,并用send()发送数据;后端需配套WebSocket服务(如Node.js的ws库、Python的websockets等)来处理连接管理、广播与鉴权。

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它让浏览器和服务器之间可以**持续保持连接、互相主动发消息**,不像传统 HTTP 那样每次请求都要重新握手。这是实现实时通信(比如聊天、协作编辑、实时通知)最常用、最直接的方式。
WebSocket 和 HTTP 的关键区别
HTTP 是“请求-响应”模型:浏览器发一次请求,服务器回一次响应,连接就断了。想获取新数据?只能不断轮询(定时发请求),效率低、延迟高、浪费资源。
WebSocket 是“长连接”模型:客户端和服务器只在建立连接时走一次 HTTP 升级(Upgrade)握手,之后就切换到 WebSocket 协议,双方随时可发消息,没有请求/响应的束缚。
前端怎么用 JavaScript 创建 WebSocket 连接
浏览器原生支持 WebSocket 构造函数,使用非常简洁:
立即学习“Java免费学习笔记(深入)”;
用 new WebSocket(url) 初始化连接,url 必须是 ws:// 或加密的 wss://(类似 http/https) 监听 open 事件表示连接成功,可以开始发送消息 监听 message 事件接收服务器推送的数据 调用 send() 方法向服务端发字符串或 ArrayBuffer(注意:不支持直接发对象,需 JSON.stringify) 监听 close 或 error 做异常处理和重连逻辑(实际项目中建议加自动重连)
一个最小可用示例
假设后端 WebSocket 服务运行在 ws://localhost:8080:
const ws = new WebSocket('ws://localhost:8080');ws.onopen = () => { console.log('已连接'); ws.send(JSON.stringify({ type: 'login', user: 'Alice' }));};ws.onmessage = (event) => { const data = JSON.parse(event.data); console.log('收到消息:', data);};ws.onclose = () => console.log('连接已关闭');ws.onerror = (err) => console.error('连接出错:', err);
后端不能少:需要配套的 WebSocket 服务
前端只是半边腿。WebSocket 要真正工作,必须有支持 WebSocket 协议的服务端,比如:
Node.js 可用 ws 库(轻量、主流)或 Socket.IO(功能更全,自带降级兼容) Python 可用 websockets 或 FastAPI + websockets Java 可用 Spring WebFlux 或 Jetty 的 WebSocket 支持
服务端要处理连接管理、广播、鉴权、心跳保活等——这些前端不用管,但开发前得确认后端已准备好对应接口和路径。
基本上就这些。WebSocket 本身不复杂,但容易忽略连接状态管理、错误重试和消息序列化细节。先跑通连接和收发字符串,再逐步加业务逻辑,就很稳了。
以上就是如何用javascript实现实时通信_WebSocket基础是什么?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1542941.html
微信扫一扫
支付宝扫一扫