У меня есть два виртуальных хоста 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.
Есть службы 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')
// {
// ...
// }
}
Первый подход предпочтителен, если у ваших веб-сокет-приложений совершенно другая логика.
Других решений пока нет …