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

我试图build立一个小系统有一个服务器(又名传感器)传输数据文件到另一台服务器(又名服务器)(都运行node.js应用程序),当它看到另一个可用。

理想情况下,服务器应该监听来自传感器的连接,当连接完成后,传感器将把所有可用的数据文件传送到服务器,然后closures连接。

我一直在玩一个名为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!'); }); }); }); 

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

 /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 

如果任何人都可以解释我错在哪里,并指出如何满足我的需求,那就太好了。 提前致谢。

你正在使用的只是服务器socket.io ,它只能接受传入的连接。 要连接到另一台服务器,你需要socket.io-client包。 这会给你连接function,就像你通常在浏览器中使用的一样,现在你可以从node.js本身使用它。