我有两个用于两个不同应用程序的 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/