2013-06-24 27 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

只是标记为“已回答”。截至目前,似乎没有办法完成我想要做的事情。