使用Socket(NodeJS,Socket.io)将数据从Python发送到服务器

3
我想将树莓派3中的传感器数据(使用Python)发送到本地节点服务器。我找到了一个名为requests的Python模块,可以将数据发送到服务器。这里,我正在尝试使用socket.io从树莓派3发送值22(稍后将有传感器数据)到本地节点服务器。requests.get()可用,但put命令无法发送数据。你能告诉我错在哪里吗?
#!/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个回答

1
你正在使用Python进行HTTP PUT,但是在nodejs端监听WebSocket服务器。要么让nodejs监听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连接可能是最好的选择。

嗯,我明白了,谢谢 :) 你知道如何在Python 2.7.9中轻松创建一个WebSocket吗? - Samy
请确保检查此链接:https://dev59.com/DHA75IYBdhLWcg3wuLnD - Loïc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接