2014-12-02 79 views
0

我有兩個不同的應用兩個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服務器服務?

回答

1

您不能在同一個端口上運行兩個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有完全不同的邏輯。

+0

感謝您的回答,我已經爲應用程序使用了不同的端口。關於你的代碼塊,我不需要在代碼中檢查主機,因爲應用程序是完全不同的。 – 2015-02-05 12:10:40