首页 > web前端 > js教程 > 正文

javascript如何与后端通信_websocket怎样实现实时数据推送

紅蓮之龍
发布: 2025-12-19 22:05:02
原创
971人浏览过
JavaScript与后端通信主要用HTTP请求(如fetch/axios)和WebSocket;前者适用于一次性交互,后者专为双向、低延迟、长连接设计,支持服务端主动推送,适合实时场景。

javascript如何与后端通信_websocket怎样实现实时数据推送

JavaScript 与后端通信主要靠 HTTP 请求(如 fetchaxios)和 WebSocket。前者适合“请求-响应”场景,后者专为**双向、低延迟、长连接**设计,是实现实时数据推送的核心方案。

用 fetch / axios 发起常规后端通信

适用于登录、提交表单、拉取列表等一次性交互:

  • fetch 示例<script></script>
    fetch('/api/user', {
      method: 'GET',
      headers: { 'Content-Type': 'application/json' }
    }).then(res => res.json()).then(data => console.log(data));
  • 后端需提供对应 REST 接口(如 Express 的 app.get('/api/user', ...)
  • 缺点:每次通信都要建立新连接,无法主动推送;轮询会浪费资源

WebSocket 实现实时数据推送

WebSocket 建立的是客户端与服务端之间的**持久化双向通道**,服务端可随时向已连接的前端推送消息,无需等待请求。

  • 前端初始化连接
    <script></script>
    const ws = new WebSocket('ws://localhost:3000');
    ws.onopen = () => console.log('已连接');
    ws.onmessage = event => console.log('收到推送:', event.data);
    ws.onerror = err => console.error('连接出错', err);
  • 后端需支持 WebSocket 协议: • Node.js 可用 ws 库(轻量)或 Socket.IO(带自动降级、房间、广播等高级功能) • 示例(ws):
    const WebSocket = require('ws');
    const wss = new WebSocket.Server({ port: 3000 });
    wss.on('connection', ws => {
      ws.send('欢迎连接');
      // 模拟定时推送
      setInterval(() => ws.send(JSON.stringify({ time: new Date().toISOString() })), 5000);
    });
  • 关键点: • URL 协议为 ws://(开发)或 wss://(生产,需 HTTPS) • 连接成功后,前后端可随时调用 send() 互发字符串或 JSON • 断线需手动重连(可用指数退避策略)

何时选 WebSocket?简单判断标准

满足以下任一条件,就该考虑 WebSocket:

AI发型设计
AI发型设计

虚拟发型试穿工具和发型模拟器

AI发型设计 247
查看详情 AI发型设计

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

  • 需要服务端主动通知前端(如聊天消息、订单状态变更、股价实时更新)
  • 高频交互(秒级甚至毫秒级更新),HTTP 轮询已造成明显延迟或服务器压力
  • 要求低延迟 + 双向通信(如在线协作文档、多人游戏)

补充:Socket.IO 更易上手

原生 WebSocket 不处理断线重连、协议兼容、广播等细节。Socket.IO 封装了这些,并支持自动降级到长轮询(兼容老旧环境):

  • 前端:const socket = io('http://localhost:3000');,监听 socket.on('msg', ...)
  • 后端:io.on('connection', socket => { socket.emit('welcome', 'Hello'); });
  • 注意:它不是 WebSocket 的替代品,而是在其之上增强的库;传输层仍可走 WebSocket

以上就是javascript如何与后端通信_websocket怎样实现实时数据推送的详细内容,更多请关注php中文网其它相关文章!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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