两个node.js服务器之间的文件/数据传输

时间:2014-03-09 08:14:26

标签: javascript node.js socket.io

我正在尝试建立一个小型系统,当一个服务器(也就是传感器)将数据文件传输到另一个服务器(也就是服务器)时(两个都运行node.js应用程序),当它看到另一个服务器可用时。

理想情况下,服务器应该从传感器侦听连接,当建立连接时,传感器会将所有可用的数据文件传输到服务器,然后关闭连接。

我一直在玩一个名为delivery.js(https://github.com/liamks/Delivery.js)的库,在阅读文档时看起来很有希望,但是,作为一名新手js程序员,我很难理解为什么我的尝试例子不起作用。

我在传感器上使用以下代码:

var io  = require('socket.io'),
    dl  = require('delivery'),
    fs  = require('fs');

var socket = io.connect('http://192.168.0.14:5001');

socket.on('connect', function() {
  log( "Sockets connected" );

  delivery = dl.listen( socket );
  delivery.connect();

  delivery.on('delivery.connect',function(delivery){
    delivery.send({
      name: 'sample-image.jpg',
      path : './sample-image.jpg'
    });

    delivery.on('send.success',function(file){
      console.log('File sent successfully!');
    });
  });

});

运行示例代码的服务器:

var io  = require('socket.io').listen(5001),
    dl  = require('delivery');

io.sockets.on('connection', function(socket){
  var delivery = dl.listen(socket);
  delivery.on('delivery.connect',function(delivery){

    delivery.send({
      name: 'sample-image.jpg',
      path : './sample-image.jpg'
    });

    delivery.on('send.success',function(file){
      console.log('File successfully sent to client!');
    });

  });
});

服务器代码运行正常并创建侦听通信的套接字。但是,传感器代码会抛出错误:

/Users/Oliver/Desktop/socket/delivery/test-delivery-client.js:5
var socket = io.connect('http://192.168.0.14:5001');
                ^
TypeError: Object #<Object> has no method 'connect'
    at Object.<anonymous> (/Users/Oliver/Desktop/socket/delivery/test-delivery-client.js:5:17)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:349:32)
    at Function.Module._load (module.js:305:12)
    at Function.Module.runMain (module.js:490:10)
    at startup (node.js:123:16)
    at node.js:1029:3

如果有人能解释我哪里出错了,并说明如何满足我的需求,那就太好了。提前谢谢。

1 个答案:

答案 0 :(得分:1)

您使用的只是服务器socket.io,它只接受传入连接。要连接到另一台服务器,您需要socket.io-client个包。这将为您提供通常在浏览器中使用的连接功能,现在您可以从node.js本身使用它。