如何设置从Python客户端到NodeJS websocket的SocketIO连接?

时间:2019-06-04 21:37:16

标签: python node.js websocket raspberry-pi

我有一个运行socketio的简单的nodejs服务器,我可以通过HTML与客户端进行两种方式的通信。现在,我还尝试从Python脚本连接到相同的nodejs websocket,但未建立连接。

简化的Node JS网络服务器:

var http = require('http').createServer(handler);
var fs = require('fs');
var io = require('socket.io')(http)
http.listen(8080);

function handler (req, res) {
  fs.readFile(__dirname + '/public/index.html', function(err, data) {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write(data);
    return res.end();
  });
}

io.sockets.on('connection', function (socket) {
  setInterval(() => {
    socket.emit('temp', 'tempfromserver')
  }, 1000)
});

想要通过websocket连接到nodejs的Python脚本:

import socketio
sio = socketio.Client();
sio.connect('http://localhost:8080')

@sio.event
def message(data):
    print('received message')
def connect():
    print('socketio connected')

是否可以通过socketio与websocket连接到nodejs服务器?如果是这样,我在做什么错了?

最终目标是从树莓派上的python脚本收集传感器数据并将其发送到nodejs服务器,该服务器又将其保存到DB并通过HTMl客户端发送。也许有更好的设置可以做到这一点。

1 个答案:

答案 0 :(得分:0)

我相信我问了类似的问题并得到了答案。我的设置有些不同,并且使用了网络套接字,但是它至少将允许您在Node JS和Python之间进行连接,然后也许可以从那里构建Using Socket IO and aiohttp for data transfer between node JS and Python。该设置最初也基于节点JS端的html脚本,因此在将其与您的设置进行比较时也可能会有所帮助。