gpt4 book ai didi

php - 带有 apache 虚拟主机的 Websocket

转载 作者:行者123 更新时间:2023-12-04 16:13:51 25 4
gpt4 key购买 nike

我有两个用于两个不同应用程序的 apache 虚拟主机:

<VirtualHost *:80>
Servername socket1.app
DocumentRoot d:\xampp\htdocs\socket1.app
<Directory d:\xampp\htdocs\socket1.app>
Allow from all
AllowOverride All
Order allow,deny
</Directory>
</VirtualHost>

<VirtualHost *:80>
Servername socket2.app
DocumentRoot d:\xampp\htdocs\socket2.app
<Directory d:\xampp\htdocs\socket2.app>
Allow from all
AllowOverride All
Order allow,deny
</Directory>
</VirtualHost>

当我打开 http://socket1.app它发送连接请求到 ws://socket1.app:8080 和
http://socket2.app发送到 ws://socket2.app:8080。

基于 ratchet php 的两个应用程序都有 php 服务器服务.
但是应用程序连接到同一个 php 服务器(已首先启动)。

我如何将此套接字连接划分到每个应用程序 php 服务器服务?

最佳答案

您不能在同一个端口上运行两个 websocket 服务器实例。

您必须在不同的端口(例如 8080 和 8081)上运行它们,或者根据主机名划分应用程序逻辑。

在 RatchetPHP 中,你可以这样做:

public function onMessage(ConnectionInterface $conn, $msg)
{
// The host name that the client connected to (socket1.app or socket2.app)
$host = $conn->WebSocket->request->getHost();

// ... some logic depending on the host name
// if ($host == 'socket1.app')
// {
// ...
// }
}

如果您的 websocket 应用程序具有完全不同的逻辑,则第一种方法更可取。

关于php - 带有 apache 虚拟主机的 Websocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27256844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com