我有两个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服务器服务?
发布于 2015-02-05 12:23:19
不能让两个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应用程序具有完全不同的逻辑,则第一种方法更可取。
https://stackoverflow.com/questions/27256844
复制相似问题