通过 Websockets 在 Nodejs 和 Python 之间进行通信
Posted
技术标签:
【中文标题】通过 Websockets 在 Nodejs 和 Python 之间进行通信【英文标题】:Communicate Between Nodejs and Python via Websockets 【发布时间】:2018-02-04 09:53:01 【问题描述】:我正在尝试通过 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
交互。想法?
【问题讨论】:
【参考方案1】:socket.io 服务器只能与 socket.io 客户端通信。它无法与普通的 webSocket 客户端通信。
Socket.io 在 webSocket 之上添加了它自己的数据格式和连接方案,它的服务器期望数据格式和连接方案存在,以便甚至允许初始连接。
因此,您不能使用 webSocket 客户端连接到 socket.io 服务器。
您的选择是获取 Python 的 socket.io 客户端库,或者将您的服务器更改为纯 webSocket 服务器。
【讨论】:
正是我正在寻找的确认!以上是关于通过 Websockets 在 Nodejs 和 Python 之间进行通信的主要内容,如果未能解决你的问题,请参考以下文章
Windows 上的 nodejs 和 websockets
本地主机上的 Websockets 通过 https:// 问题