Node.js服务器之间的远程启动和通信

时间:2015-06-02 16:57:31

标签: javascript node.js socket.io

我是Node.js的新手,也是服务器通信的新手。 我试图找到以前的答案,但他们经常关注服务器和客户端之间的通信。 我有不同的情况,所以需要你周到的帮助。

让我们假设我们有三个系统的场景,localhost(即笔记本电脑)和两个云服务器。我想在localhost中编写一个js应用程序,它将数据数组分成两个块,然后将它们发送到云服务器(块#1到服务器#1,块#2到服务器#2)。接收它们,两个远程服务器同时开始工作。然后,如果他们有更新的值,他们会进行相同的计算并将他们的计算结果发送给对方

在这种情况下,我想解决粗体句。我相信使用模块“socket.io”将是一个正确的方法来处理这个(特别是远程启动和通信),但在设计代码时没有任何明确的想法。另外,理解“socket.io”本身有点棘手。如果您需要进一步说明该方案,请发表评论。

1 个答案:

答案 0 :(得分:0)

与socket.io一起,查看名为Faye(http://faye.jcoglan.com/node.html)的模块。我已经使用它几年了,非常喜欢它。 Faye是一种发布订阅通信方案,允许您根据需要将场景扩展到尽可能多的客户端。要在系统上安装faye,请运行以下命令:

 npm install -g faye

现在,这是您的服务器代码:

var faye = require('faye');

var Server = new faye.NodeAdapter({mount: ('/FayeServer'), timeout: 120});

//now fire the server up on the port 5555
Server.listen(5555);

//subscribe to channel DataChannel
var Subscription = Server.getClient().subscribe("DataChannel", 
    function(dataObject){    console.log(dataObject)    }, 
    function(status) { 
        console.log('Subscription Status: ' + status);
        //send message with two numbers to any client listening to DataChannel
        Server.getClient().publish('/DataChannel', {A:5,B:12});
    });

现在,这是客户端代码:

var faye = require('faye');

//open client to server
var Client = new faye.Client('http://127.0.0.1:5555/FayeServer');

//now subscribe to the channel DataChannel
Client.subscribe('/DataChannel', function(dataObject)
{
    Client.publish('/DataChannel', {C:(dataObject.A * dataObject.B)};
});

还有很多工作要做,但是通过这个基本框架,您可以将服务器站起来,响应来自服务器的消息的N个客户端程序。

您需要将127.0.0.1替换为您的特定网址,并使用更适用于您的特定应用的端口号和频道名称。