如何将socket.io和http服务器放在不同的进程中,但使用相同的主机和端口?

时间:2012-02-06 15:10:21

标签: node.js scalability socket.io

网上的大多数例子都提供了这样的内容:

var app = require('express').createServer()
  , io = require('socket.io').listen(app);

app.listen(80);

要求您让http和套接字服务器处于同一进程中。

如果有人制作一个有一定大小的网站,可能需要将两个服务器分开,但仍然让它们使用相同的域和端口。怎么会这样呢?

1 个答案:

答案 0 :(得分:0)

首先让我帮助澄清你的问题。

您希望做的是在单独的计算机上运行NodeHTTP Web服务器和SocketIO客户端,但仍然可以通过相同的域(非子域)访问

这将是非常困难和棘手的,你将需要多个IP到该框和haproxy相应地映射请求

如果它是负载平衡,你需要阅读我的堆栈:

我有几个服务器(5个实际值)通过循环进行负载平衡,所以我在DNS记录中有这个

relay.domain.com: {
    A : 10.0.0.1,
    A : 10.0.0.2,
    A : 10.0.0.3,
    A : 10.0.0.4
}

我还有一台位于 master.domain.com(10.0.0.0)的主服务器,来自我的socket.io客户端的所有连接都来自 relay.domain.com 并且连接负载平衡到4台服务器。

4个服务器中的每一个都列出了端口80上的连接,但是它们都创建了一个到主服务器的 socket.io-client 连接,并将所有请求发送给主服务器,然后主服务器处理套接字数据,如果要通知它的数据,我们会将数据发送回所有中继服务器,然后中继服务器通知客户端列表。