的WebSocket与Apache虚拟主机
问题描述:
我有两个不同的应用两个Apache虚拟主机:的WebSocket与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有完全不同的逻辑。
感谢您的回答,我已经为应用程序使用了不同的端口。关于你的代码块,我不需要在代码中检查主机,因为应用程序是完全不同的。 – 2015-02-05 12:10:40