Websocket с Apache Vhosts

У меня есть два виртуальных хоста 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 сервера приложений?

0

Решение

У вас не может быть двух экземпляров сервера 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')
// {
// ...
// }
}

Первый подход предпочтителен, если у ваших веб-сокет-приложений совершенно другая логика.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]