讲师中心 微信公众号

工具推荐

视频效率加速
Seko
Seko

AI短剧一键生成成片

AniShort
AniShort

AI短剧协同制作平台

Laper
Laper

剧本策划到成片协作

updream

一键生成高质量推广成片

如何在无 WebSocket 的情况下通过 HTTP 实现跨设备数据传输

大瑶吖_2090

大瑶吖_2090

发布时间:2026-02-11 15:17:55

|

905人浏览过

|

来源于php中文网

原创

如何在无 WebSocket 的情况下通过 HTTP 实现跨设备数据传输

本文介绍一种轻量、标准且无需 websocket 或第三方库的方案:使用 javascript 的 `fetch` + `formdata` 发送 json 序列化对象,配合 php 后端接收并响应,适用于实时性要求不高的跨设备通信场景(如简易位置共享游戏)。

在 Web 开发中,若需将客户端生成的数据(例如玩家坐标、状态对象等)发送至另一台计算机(即服务端),而明确排除 WebSocket、Socket.IO 等长连接方案,最可靠、兼容性最佳的选择是基于 HTTP 的传统请求机制——尤其是现代浏览器广泛支持的 fetch() API 配合表单式数据提交。

核心思路是:将结构化数据(如数组或对象)序列化为 JSON 字符串,通过 FormData 封装为标准表单字段,再以 POST 请求发送至 PHP 后端;PHP 解析该字符串后可进一步处理、存储或转发给其他客户端。

WebSocket 8.18.2
WebSocket 8.18.2

WebSocket 8.18.2 是该协议规范的一个重要迭代版本,主要优化了连接稳定性与数据传输效率。它通过全双工通信机制,允许客户端与服务器在单一长连接上实时交换数据,大幅降低传统 HTTP 轮询的开销。该版本增强了心跳保活、自动重连及二进制帧传输能力,适用于即时通讯、在线游戏及金融行情推送等低延迟场景,为开发者提供更可靠的实时网络交互基础。

下载

以下是一个完整、可立即运行的示例:

✅ 前端(index.html):发送位置数据

<!DOCTYPE html>
<html>
<head><title>位置发送端</title></head>
<body>
  <script>
    // 模拟玩家实时位置(可替换为 GPS、Canvas 坐标等)
    const playerPosition = {
      x: 123.45,
      y: 67.89,
      timestamp: Date.now()
    };

    // 构造 FormData 并附加 JSON 字符串
    const data = new FormData();
    data.append("location", JSON.stringify(playerPosition));

    // 发起 POST 请求(目标为同域 PHP 脚本)
    fetch("./receive.php", {
      method: "POST",
      body: data
    })
    .then(response => response.text())
    .then(result => console.log("服务器响应:", result))
    .catch(err => console.error("传输失败:", err));
  </script>
</body>
</html>

✅ 后端(receive.php):接收并解析数据

<?php
header('Content-Type: text/plain; charset=utf-8');

// 检查是否收到 location 字段
if (!isset($_POST['location'])) {
    http_response_code(400);
    echo "错误:缺少 location 参数";
    exit;
}

// 安全地解码 JSON(注意:务必验证格式与内容)
$raw = $_POST['location'];
$location = json_decode($raw, true);

if (json_last_error() !== JSON_ERROR_NONE) {
    http_response_code(400);
    echo "错误:无效的 JSON 格式";
    exit;
}

// 示例:记录日志或存入数据库
file_put_contents('positions.log', date('c') . " - " . $raw . "\n", FILE_APPEND);

// 返回确认响应(可扩展为返回其他客户端最新位置)
echo "✅ 位置已接收:x=" . ($location['x'] ?? 'N/A') . ", y=" . ($location['y'] ?? 'N/A');
?>

⚠️ 关键注意事项

  • 同源限制:上述示例默认要求前端 HTML 与 PHP 文件部署在同一域名/端口下(如 http://localhost/)。若需跨域(如两台不同电脑访问),需在 PHP 中添加 CORS 头:
    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Methods: POST");
    header("Access-Control-Allow-Headers: Content-Type");
  • 安全性提醒:生产环境切勿直接 echo $_POST['xxx'];所有输入必须校验类型、范围与合法性,JSON 解码后应检查关键字段是否存在且符合预期结构。
  • 扩展性说明:此模式天然支持“一对多”广播——PHP 接收后可将数据写入文件、数据库或 Redis,再由其他客户端定时轮询(如 setInterval(() => fetch('/get-latest.php'), 1000))拉取最新状态,实现类实时同步。
  • 替代方案对比:相比 AJAX + application/json(需设置 Content-Type 且部分旧版 PHP 需手动读取 php://input),FormData 方式更兼容、无需额外配置,尤其适合初学者快速验证逻辑。

该方案零依赖、纯原生、易调试,是构建轻量级多人互动应用(如双人协作绘图、回合制地图共享、教育类协同实验)的理想起点。

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

花生AI
花生AI Hot

一款AI视频创作工具,主要用于B站推出的AI视频创作工具,适合需要提升相关任务效率的用户。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

码上飞
码上飞 Hot

一款基于自然语言的AI应用开发平台,可根据用户描述自动生成应用程序,帮助个人和团队快速完成应用原型与开发。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
json数据格式
json数据格式

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

2315

2023.08.07

json是什么
json是什么

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

3782

2023.08.23

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

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

1256

2023.10.13

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

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

4399

2025.09.10

ajax教程
ajax教程

php中文网为大家带来ajax教程合集,Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。php中文网还为大家带来ajax的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

3420

2023.06.14

ajax中文乱码解决方法
ajax中文乱码解决方法

ajax中文乱码解决方法有设置请求头部的字符编码、在服务器端设置响应头部的字符编码和使用encodeURIComponent对中文进行编码。本专题为大家提供ajax中文乱码相关的文章、下载、课程内容,供大家免费下载体验。

360

2023.08.31

ajax传递中文乱码怎么办
ajax传递中文乱码怎么办

ajax传递中文乱码的解决办法:1、设置统一的编码方式;2、服务器端编码;3、客户端解码;4、设置HTTP响应头;5、使用JSON格式。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3253

2023.11.15

ajax网站有哪些
ajax网站有哪些

使用ajax的网站有谷歌、维基百科、脸书、纽约时报、亚马逊、stackoverflow、twitter、hacker news、shopify和basecamp等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1181

2024.09.24

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

80

2026.11.06

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebSocket手册
WebSocket手册

共0课时 | 0人学习

Webman中文手册
Webman中文手册

共0课时 | 0人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn