服务器之间的websocket通信

时间:2014-12-22 15:20:52

标签: node.js sockets websocket

我在Stackoverflow上阅读了很多内容,但经过一周的思考和研究后,我一直在被困......

所以我真的要问:)

希望我能正确解释问题,如果没有,请说出来!

问题是简单的。我需要2台服务器......服务器A - 除了每15分钟填充一次数据库之外什么都不做,服务器B用服务器A处理数据。

很容易让服务器B对数据进行http请求,但我真正想要的是服务器B在更新数据库数据时从服务器A获得“套接字更新”。

问题:服务器B并不总是在同一个URL上....所以数据库服务器不能简单地执行get / post请求,因为它不会总是知道它的url。

这就是为什么我希望,服务器B可以启动与数据库服务器的socket.io连接。保持对服务器A的开放,以便服务器A可以通过已建立的套接字连接响应其新的数据库数据....

所以基本上......是否有可能在两台服务器之间建立一个通用的socket.io连接..就像客户端之间的服务器一样???

非常感谢!!!

更新:稍微澄清一下。

我有一个股票数据库..它从交易API获取所有数据,每15分钟一次。 这台服务器绝对不能停止!它可能,但令人讨厌,导致数据不一致......

我有另一个脚本,它将一直处于开发阶段。它会对来自数据库服务器的数据进行计算。所以它偶尔会有(dev)错误等等。这个脚本不应该停止'数据库自动收录器'脚本......所以我想把它们彼此分开运行。这就是为什么我需要有2台服务器相互连接..

我的数据库是从一个固定网址运行的。但我的开发脚本取决于我目前开发的位置..

对于我想要达到的目标,也许有更好的解决方案..?

2 个答案:

答案 0 :(得分:4)

对于服务器到服务器的通信,您可以对其中一个使用socket.io依赖,而对另一个使用socket.io-client

答案 1 :(得分:1)

应该可以,服务器通常是其他服务器的客户端。您还可以让服务器监听多个端口 - 服务器A可以侦听来自服务器B的连接(B与更改的URL)可以建立连接以轮询来自A的更改。或者,就像您所说,有A推他们。

您可以使用http节点模块发出请求;这是一个总结:

http = require('http');
var call = http.request(
    { hostname: "google.com",
      port: 80,
      path: "/",
      method: "GET",
      auth: "user" + ":" + "password"
    },
    function(res) {
        var data = "";
        res.on('data', function(chunk) {
            data += chunk;
        });
        res.on('end', function(err) {
            console.log("Response was", data);
        });
    }
);
req.write("");
req.end();