You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hostinger Centos VPS下PHP Ratchet WebSocket实时聊天部署疑问

PHP Ratchet实时聊天连接疑问解答

正在尝试使用PHP Ratchet包搭建实时聊天功能,现有代码如下:

server.php 文件代码

use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
use MyApp\Chat;
require dirname(__DIR__) . '/rat/autoload.php';
$server = IoServer::factory(
    new HttpServer(
        new WsServer(
            new Chat()
        )
    ),
   8000
);
$server->run();

message.php 中的JS脚本代码

var conn = new WebSocket('ws://localhost:8000');                
conn.onopen = function(e) {
console.log("Connection established!");
};

疑问解答

① 前端WebSocket连接地址使用ws://localhost:8000是否正确?是否需要替换为主机名或域名?

  • 本地开发测试阶段,ws://localhost:8000完全正确,localhost指向本地回环地址,适合本地调试使用。
  • 部署到线上生产环境时,必须替换为服务器的公网IP、域名或主机名,否则外部用户无法连接到WebSocket服务。例如你的域名是example.com,则需改为ws://example.com:8000;如果站点使用HTTPS协议,要改用wss://example.com:8000(需提前配置好SSL证书)。

② 应该使用哪个端口?

  • 只要是未被系统或其他服务占用的空闲端口都可以使用,你当前代码中的8000是开发场景下常用的端口,完全可行。
  • 推荐选择端口号大于1024的非特权端口(如8080、9000、3000等),这类端口无需root权限即可启动服务,避免权限问题。
  • 如果要让外部用户访问,需要确保服务器防火墙和云服务器安全组都放行你选择的端口。
  • 若想使用80或443这类默认HTTP/HTTPS端口,需要以root权限启动服务,且确保这两个端口未被Apache、Nginx等Web服务器占用;也可以通过Nginx反向代理,将WebSocket请求转发到Ratchet服务的端口上,无需直接占用80/443端口。

内容的提问来源于stack exchange,提问作者Medz Ramy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 01:20:39