我正在尝试通过websockets将数据从python发送到nodejs。 JS:
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
server.listen(3000, () => console.log('running on 3000'));
io.sockets.on('connection', function(socket) {
io.sockets.on('msg', function(data) {
console.log(data);
});
});
的Python:
import asyncio
import websockets
async def sendData(uri, data):
// FAILS ON THE FOLLOWING LINE:
async with websockets.connect(uri) as websocket:
await websocket.send(json.dumps(data))
def main():
text = "sample data"
asyncio.get_event_loop().run_until_complete(
sendData("ws://localhost:3000", {"msg": text})
)
main()
我收到“格式错误的HTTP消息”错误(websockets.exceptions.InvalidMessage: Malformed HTTP message)
我担心python websockets
可能无法与socket.io
接口。想法?
答案 0 :(得分:6)
socket.io服务器只能与socket.io客户端通信。它无法与普通的webSocket客户端通信。
Socket.io在webSocket之上添加了自己的数据格式和连接方案,并且它的服务器期望数据格式和连接方案在那里,以便甚至允许初始连接。
因此,您无法使用webSocket客户端连接到socket.io服务器。
您的选择是获取Python的socket.io客户端库或将服务器更改为普通的webSocket服务器。