使用 python 连接到烧瓶 websocket

Posted

技术标签:

【中文标题】使用 python 连接到烧瓶 websocket【英文标题】:Connecting to a flask websocket using python 【发布时间】:2017-06-22 17:37:11 【问题描述】:

我正在尝试做的事情可能是不可能的,但它就是这样。

我已经使用 Flask 有一段时间了,并使用 flask-socketio 创建了几个测试,允许用户在通过 Web 浏览器访问页面时立即进行通信。

但是,我想知道当使用 socket 模块从 Python 本身连接到服务器时,这种事情是否可能。从同一系统连接到使用 socket 模块托管的 Python 中的套接字非常简单:

import socket
s = socket.socket()
host = socket.gethostname()
port = 12345
s.connect((host, port))

但是经过一两个小时的研究和实验,我无法弄清楚如何使用这种代码连接到烧瓶中的 websocket 设置。

任何帮助(或只是告诉我这是不可能的)将不胜感激!

===== 编辑 =====

因此,在@Aravind 的帮助下,我提出了一个仅使用 python 的客户端服务器解决方案的简单示例:

服务器:

from flask import Flask
from flask_sockets import Sockets


app = Flask(__name__)
sockets = Sockets(app)


@sockets.route('/echo')
def echo_socket(ws):
    while not ws.closed:
        message = ws.receive()
        print(message)
        ws.send(message)

客户:

import websocket
from websocket import create_connection
ws = create_connection("ws://127.0.0.1:12345/echo")
ws.send("hello world")
ws.recv()

我现在意识到我试图做的事情已经在多个不同的地方多次解释过,我只是没有把各个部分放在一起。希望这可以帮助像我一样对 websockets 感到困惑的其他人。

【问题讨论】:

【参考方案1】:
import websocket
from websocket import create_connection
ws = create_connection("127.0.0.1:12345")
#ws.close() for closing 
#ws.send()enter code here
#ws.recv()
#pip install websocket-client 

【讨论】:

将此标记为答案,因为尽管我认为我已经尝试过此操作,但再次尝试此操作最终使我进行了一系列研究,最终解决了我的问题。我的解决方案将在问题中解释。

以上是关于使用 python 连接到烧瓶 websocket的主要内容,如果未能解决你的问题,请参考以下文章

如何与多个 html 文件共享一个 javascript websocket 实例

如何使用 IAM Auth 将 python websocket 连接到 AppSync 订阅?

当python中的连接失败时如何重新连接到websocket

Kubernetes Python客户端:使用Autobahn websocket连接到pod /服务/使用bearer token连接

是否可以将JS WebSocket连接到Python服务器?

无法使用 python 3 websocket 库连接到远程安全 web socket服务器