php - 如何与 apache 服务器并行运行棘轮 websocket 服务器
问题描述
我正在尝试使用棘轮和 php 创建一个聊天应用程序。我创建了 websocket 服务器来监听 server.php 文件中的 8080 端口,但在托管后我找不到如何将它与 apache 服务器并行运行。
服务器.php
<?php
require 'vendor/autoload.php';
use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
use Core\Socket\Chat;
use Core\Router;
use Core\Request;
$server = IoServer::factory(
new HttpServer(
new WsServer(
new Chat()
)
),
8080
);
$server->run();
索引.php
<!DOCTYPE html>
<html>
<head>
<title>A Chat App</title>
</head>
<body>
<h1>Chat App</h1>
</body>
<script>
const socket = new WebSocket('ws://localhost:8080');
socket.addEventListener('open', event => {
console.log('Connection established');
socket.send('Hey There Everyone');
});
socket.addEventListener('message', message => {
console.log(message);
});
</script>
</html>
当我在 localhost 上使用 cmd 和 index.php 运行 server.php 时,这可以正常工作。但是如何在托管网络托管服务后并行运行这些文件。
解决方案
您正在运行两个想要使用相同端口的不同进程。所以这个设置是不可能的。但是您可以要求 apache 为您的 websocket 脚本提供服务,而不是使用命令行。
请参阅帖子的链接,其中包含您可以采取的方法的详细信息: 在 Apache 上设置 websocket?
推荐阅读
- python - 我如何使我的底图线改变方向
- javascript - jquery如何在编辑后更新数据表行?
- angular - 使用 Firestore 存储从存储桶获取图像的 Angular
- assembly - RISC-V 汇编语言。只打印零
- java - DDS IDL 编译器
- android - 如何在滚动视图中显示两个列表视图
- r - ggplot2:两个数值变量的 geom_boxplot 表示问题
- android - 推送通知不显示或立即消失 [CodenameOne]
- c# - 是否刷新顶级流最终会刷新顶级流隐式包装的所有嵌套流?
- angular - Angular Mat 表格突出显示一列