我是Node.js的新手,也是服务器通信的新手。 我试图找到以前的答案,但他们经常关注服务器和客户端之间的通信。 我有不同的情况,所以需要你周到的帮助。
让我们假设我们有三个系统的场景,localhost(即笔记本电脑)和两个云服务器。我想在localhost中编写一个js应用程序,它将数据数组分成两个块,然后将它们发送到云服务器(块#1到服务器#1,块#2到服务器#2)。接收它们,两个远程服务器同时开始工作。然后,如果他们有更新的值,他们会进行相同的计算并将他们的计算结果发送给对方。
在这种情况下,我想解决粗体句。我相信使用模块“socket.io”将是一个正确的方法来处理这个(特别是远程启动和通信),但在设计代码时没有任何明确的想法。另外,理解“socket.io”本身有点棘手。如果您需要进一步说明该方案,请发表评论。
答案 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替换为您的特定网址,并使用更适用于您的特定应用的端口号和频道名称。