XAMPP配置多端口支持WebSocket协议

雨磊大大_1894

雨磊大大_1894

2026-04-28

200人浏览

原创

xampp默认apache不支持websocket,因其仅为http服务器,无法处理upgrade握手;需通过swoole/workerman、node.js或mod_proxy_wstunnel反向代理至独立ws服务实现。

xampp配置多端口支持websocket协议

XAMPP 默认的 Apache 不支持 WebSocket 协议,因为 WebSocket 是独立于 HTTP 的长连接协议,需要后端服务主动监听并处理 ws:// 或 wss:// 请求——Apache 本身不提供 WebSocket 服务端能力,它只是 HTTP 服务器。

为什么直接在 XAMPP Apache 里配 Listen 8080 无法启用 WebSocket

很多人误以为只要 Apache 监听一个新端口(比如 Listen 8080),再配个虚拟主机指向某个 PHP 文件,就能让前端用 new WebSocket("ws://localhost:8080") 连上。这是错的:

  • Apache 不解析 Upgrade: websocket 请求头,也不会切换协议,会直接返回 400 或 405 错误
  • 浏览器发起 WebSocket 握手时,HTTP 请求带 Connection: Upgrade 和 Upgrade: websocket,Apache 默认拒绝或忽略该升级流程
  • 即使你看到 WebSocket connection to 'ws://...' failed: Error during WebSocket handshake,根源不是端口没开,而是协议不被 Apache 处理

真正能跑 WebSocket 的三种可行路径

要在 XAMPP 环境下让 WebSocket 工作,必须绕过 Apache 的限制,用其他进程承担 WebSocket 服务端职责:

WebSocket 8.18.2
WebSocket 8.18.2

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

下载
  • 方案一:用 PHP 启动独立 WebSocket 服务端(推荐初学者)
    例如用 Workerman 或 Swoole 写一个 PHP WebSocket 服务,监听 0.0.0.0:2346,前端连 ws://localhost:2346;XAMPP 只负责托管静态页或 API 接口,不参与 WS 通信
  • 方案二:用 Node.js + ws 库起轻量服务
    写几行 JS 就能跑起来:const WebSocket = require('ws'); const wss = new WebSocket.Server({ port: 8081 });,然后前端连 ws://localhost:8081
  • 方案三:反向代理 + 独立服务(生产可用)
    保留 Apache 处理 HTTP 流量,用 Nginx 做反向代理,把 /ws 路径或特定子域名(如 ws.example.local)转发到本地运行的 WebSocket 服务(如 Swoole 或 Node)

若坚持用 Apache,唯一“伪支持”方式是反向代理 WebSocket

Apache 2.4+ 确实可通过 mod_proxy_wstunnel 模块代理 WebSocket 流量,但前提是背后已有真实 WebSocket 服务在运行。配置要点如下:

  • 确保 httpd.conf 中已启用:LoadModule proxy_module modules/mod_proxy.so 和 LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
  • 在虚拟主机或主配置中添加:
    <location><br>    ProxyPass "ws://127.0.0.1:8081/"<br>    ProxyPassReverse "ws://127.0.0.1:8081/"<br></location>
  • 前端仍需连 ws://localhost/ws,而 Apache 把请求透传给本地 8081 端口的真实 WS 服务
  • 注意:ProxyPass 的目标地址必须是 ws://(不是 http://),否则握手失败

真正容易被忽略的是:WebSocket 的生命周期和错误重连逻辑必须由前端代码自己控制,后端服务一旦崩溃,Apache 完全无感知——它只管转发,不维护连接状态。所以调试时看到频繁断连,先查后台服务是否存活,而不是反复改 Apache 配置。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

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

下载

相关标签:

xampp websocket

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

10204

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

6041

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

2095

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

3788

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

4494

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

3531

9

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.09

5017

8

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

3942

8

sprintf函数用法详解
sprintf函数用法详解

sprintf函数的用法:1、格式化字符串;2、指定输出宽度和精度;3、返回值。更多关于sprintf函数用法详解的内容,大家可以阅读下面的文章。

2023.11.27

11902

4

热门下载

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

精品课程

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