在运行nodejs的raspberry pi和服务器之间创建持久套接字连接的最佳方法

时间:2014-08-15 17:10:45

标签: node.js sockets socket.io raspberry-pi

我正在使用在nodejs上运行pi.js的覆盆子pi设置一个网络连接的喷水器。我也在为我的服务器运行nodejs。我需要这两个在它们之间有一个持久的套接字连接:raspberry pi和服务器。我在考虑socket.io

有没有人有过使用socket.io这样的经历?或者使用coAP协议更有意义?或完全不同的东西?

1 个答案:

答案 0 :(得分:0)

在沿着socket.io路径行进一段时间后,我意识到这不是最合适的 - 特别是考虑到它更多的设计和构建时考虑到了浏览器。所以,我回到了socket.io作为依赖项使用的内容:https://github.com/einaros/ws。这个npm包不太关心浏览器,更适合我在整个物联网方法中的需求。

我的代码如下所示:

SERVER:

var WebSocketServer = require('ws').Server
, http = require('http')
, FS = require('fs')
, bodyParser = require('body-parser')
, express = require('express')
, app = express();


app.use(bodyParser.json());
app.use(express.static(__dirname + '/app'));

var server = http.createServer(app);
server.listen(8080);

var wss = new WebSocketServer({server: server});

wss.on('connection', function(ws) {
    ws.on('message', function(data, flags) {
        console.log(data);
    });

    ws.on('close', function() {
        console.log('stopping client interval');
    });

    console.log('started client interval'); 
}); 

客户(作为控制水阀的Raspberry Pi)

var WebSocket           = require('ws');

var ws = new WebSocket("ws://0.0.0.0:8080");
ws.on('open', function() {
    console.log('should be now connected');
}); 

ws.on('message', function(data, flags) {
    console.log(JSON.parse(data));
}