2013-06-24 28 views
0

我正在運行一個節點應用程序,該節點應用程序有條件地基於HTTP請求的子域來應用其他應用程序.use。造成這種情況的代碼如下:我怎樣才能讓socket.io使用子域名?

var server = http.createServer(app); 

...

global.socket = io.listen(server); 

...

subdomains.forEach(function (subdomain) { 
    var vhost = (subdomain == '_' ? '' : subdomain + '.') + domain; 
    app.use(express.vhost(vhost, require('./' + subdomain))); 
}); 

現在假設我想在兩個不同的子域使用socket.io。它們都可以訪問相同的套接字,因爲它在同一個端口上運行。但是,如果我嘗試連接到http://sub1.domain.tld/,則任何廣播也會發送到http://sub2.domain.tld/

有什麼辦法可以限制廣播,發射,& c。基於連接的子域名?

+0

不,如果您的進程正在偵聽該端口,數據將被您的進程接收。您可以忽略基於查詢的url進入連接的數據,或者更好的是,在您的主端口上設置代理服務,並在不同端口上爲您各自的服務器設置兩種不同的服務。然後基於哪個子域被ping通來代理請求。 – ChrisCM

回答

0

只是標記爲「已回答」。截至目前,似乎沒有辦法完成我想要做的事情。