我有一个运行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客户端发送。也许有更好的设置可以做到这一点。
答案 0 :(得分:0)
我相信我问了类似的问题并得到了答案。我的设置有些不同,并且使用了网络套接字,但是它至少将允许您在Node JS和Python之间进行连接,然后也许可以从那里构建Using Socket IO and aiohttp for data transfer between node JS and Python。该设置最初也基于节点JS端的html脚本,因此在将其与您的设置进行比较时也可能会有所帮助。