0

0

如何用javascript实现实时通信_WebSocket基础是什么?

紅蓮之龍

紅蓮之龍

发布时间:2025-12-16 20:25:28

|

405人浏览过

|

来源于php中文网

原创

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

如何用javascript实现实时通信_websocket基础是什么?

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它让浏览器和服务器之间可以**持续保持连接、互相主动发消息**,不像传统 HTTP 那样每次请求都要重新握手。这是实现实时通信(比如聊天、协作编辑、实时通知)最常用、最直接的方式。

WebSocket 和 HTTP 的关键区别

HTTP 是“请求-响应”模型:浏览器发一次请求,服务器回一次响应,连接就断了。想获取新数据?只能不断轮询(定时发请求),效率低、延迟高、浪费资源。

WebSocket 是“长连接”模型:客户端和服务器只在建立连接时走一次 HTTP 升级(Upgrade)握手,之后就切换到 WebSocket 协议,双方随时可发消息,没有请求/响应的束缚。

前端怎么用 JavaScript 创建 WebSocket 连接

浏览器原生支持 WebSocket 构造函数,使用非常简洁:

立即学习Java免费学习笔记(深入)”;

MyMap AI
MyMap AI

使用AI将想法转化为图表

下载
  • new WebSocket(url) 初始化连接,url 必须是 ws:// 或加密的 wss://(类似 http/https)
  • 监听 open 事件表示连接成功,可以开始发送消息
  • 监听 message 事件接收服务器推送的数据
  • 调用 send() 方法向服务端发字符串或 ArrayBuffer(注意:不支持直接发对象,需 JSON.stringify)
  • 监听 closeerror 做异常处理和重连逻辑(实际项目中建议加自动重连)

一个最小可用示例

假设后端 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 可用 websocketsFastAPI + websockets
  • Java 可用 Spring WebFlux 或 Jetty 的 WebSocket 支持

服务端要处理连接管理、广播、鉴权、心跳保活等——这些前端不用管,但开发前得确认后端已准备好对应接口和路径。

基本上就这些。WebSocket 本身不复杂,但容易忽略连接状态管理、错误重试和消息序列化细节。先跑通连接和收发字符串,再逐步加业务逻辑,就很稳了。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
spring框架介绍
spring框架介绍

本专题整合了spring框架相关内容,想了解更多详细内容,请阅读专题下面的文章。

116

2025.08.06

Java Spring Security 与认证授权
Java Spring Security 与认证授权

本专题系统讲解 Java Spring Security 框架在认证与授权中的应用,涵盖用户身份验证、权限控制、JWT与OAuth2实现、跨站请求伪造(CSRF)防护、会话管理与安全漏洞防范。通过实际项目案例,帮助学习者掌握如何 使用 Spring Security 实现高安全性认证与授权机制,提升 Web 应用的安全性与用户数据保护。

46

2026.01.26

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

420

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

536

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

313

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

77

2025.09.10

Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API

Python FastAPI 异步开发利用 async/await 关键字,通过定义异步视图函数、使用异步数据库库 (如 databases)、异步 HTTP 客户端 (如 httpx),并结合后台任务队列(如 Celery)和异步依赖项,实现高效的 I/O 密集型 API,显著提升吞吐量和响应速度,尤其适用于处理数据库查询、网络请求等耗时操作,无需阻塞主线程。

27

2025.12.22

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

228

2023.10.18

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

54

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 4.4万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 2.6万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号