python - 通过 Websockets 在 Nodejs 和 Python 之间通信

标签 python node.js websocket

我正在尝试通过 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:格式错误的 HTTP 消息) 我担心 python websockets 可能未设计为与 socket.io 交互。想法?

最佳答案

socket.io 服务器只能与 socket.io 客户端通信。它无法与普通的 webSocket 客户端通信。

Socket.io 在 webSocket 之上添加了它自己的数据格式和连接方案,它的服务器期望数据格式和连接方案存在,以便甚至允许初始连接。

因此,您不能使用 webSocket 客户端连接到 socket.io 服务器。

您的选择是获取 Python 的 socket.io 客户端库或将您的服务器更改为普通的 webSocket 服务器。

关于python - 通过 Websockets 在 Nodejs 和 Python 之间通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48606817/

相关文章:

python - 集成多个Python项目

node.js - socket.io 与 Rest api 之间的资源比较

node.js - Mongoose model.save() 卡在等待状态?

c# 如何从证书和 key 或 pfx 或 p7b 创建 X509 证书

azure - 如果浏览器选项卡处于非事件状态,则 SignalR 连接超时

python - 在 PyCharm 中使用 Vue.js 时出现 "Unidentified character <"错误

python - 处理 sklearn.preprocessing 上的缺失 (nan) 值

node.js - 当mongodb不在同一个VM中时,mongodb连接超时

go - 尝试 Websocket 连接时出现意外响应代码 200

Python戴尔驱动程序下载