将数据从Python发送到带有套接字的服务器节点(NodeJS,Socket.io)

时间:2016-08-09 16:16:40

标签: python node.js websocket socket.io

我尝试将传感器数据(在python中)从我的覆盆子pi3发送到我的本地节点服务器。

我找到了一个名为requests的python模块,用于将数据发送到服务器。

在这里,我尝试使用socket.io将值22(稍后将有传感器数据)从我的覆盆子pi3发送到我的本地节点服务器.requests.get()可以正常工作,但是put commmand没有&#39 ; t发送数据。

你能告诉我错误在哪里吗?

#!/usr/bin/env python
#

import requests

r = requests.get('http://XXX.XXX.XXX.XXX:8080');

print(r)

r = requests.put('http://XXX.XXX.XXX.XXX:8080', data = {'rasp_param':'22'});

在我的server.js中,我尝试获取数据,但不知何故没有收到

server.js

var express = require('express')
,   app = express()
,   server = require('http').createServer(app)
,   io = require('socket.io').listen(server)
,   conf = require('./config.json');

// Webserver
server.listen(conf.port);

app.configure(function(){

    app.use(express.static(__dirname + '/public'));
});


app.get('/', function (req, res) {

    res.sendfile(__dirname + '/public/index.html');
});

// Websocket
io.sockets.on('connection', function (socket) {

    //Here I want get the data
    io.sockets.on('rasp_param', function (data){
        console.log(data);
    });

    });
});

// Server Details
console.log('Ther server runs on http://127.0.0.1:' + conf.port + '/');

1 个答案:

答案 0 :(得分:1)

您正在使用Python的HTTP PUT,但您正在使用nodejs端的websocket服务器进行监听。

要么让节点侦听HTTP POST(我使用POST而不是PUT):

app.post('/data', function (req, res) {    
    //do stuff with the data here
});

在python方面有一个websocket客户端:

ws = yield from websockets.connect("ws://10.1.10.10")
ws.send(json.dumps({'param':'value'}))

持久的websocket连接可能是最佳选择。