问题标签 [flask-sockets]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4351 浏览

javascript - 如何让这个 websocket 示例与 Flask 一起使用?

我正在尝试使用Kenneth reitz 的Flask-Sockets 库来编写一个简单的 websocket 接口/服务器。这是我到目前为止所拥有的。

我期望发生的是当我转到默认烧瓶页面时,http://localhost:5000在我的情况下,我会看到一个带有文本的警告框hello john,但是我得到一个 Firefox 错误。错误是Firefox can't establish a connection to the server at ws://localhost:5000/echo。如何hello john通过向 Web 服务器发送消息然后回显回复来显示在警报框中?

0 投票
3 回答
9883 浏览

python - 如何使用 Flask-Sockets?获取 KeyError:'wsgi.websocket'

我正在尝试将Flask-Sockets与示例代码一起使用:

不幸的是,当简单地使用我的浏览器访问 url /echo 时,它给了我一个错误消息:

有人知道我做错了什么吗?欢迎所有提示!

[编辑] @jbub - 感谢您的提示!所以开始我现在使用 gunicorn 而不是内置的开发服务器。所以我开始使用gunicorn -k flask_sockets.worker -b 0.0.0.0:5000 main:app. 然后我将下面的代码插入到我的views.py 中,其中 echo_test.html 是您提供的代码。当我现在访问 /echo_test 时,我确实收到提示“套接字已关闭”。

但是,假设我的目标是在页面上使用从列表中随机选择的其他值更新一个单词(从列表中随机选择)。您对实现这一目标有什么建议吗?

0 投票
1 回答
370 浏览

websocket - 通过烧瓶套接字和 gunicorn 上的 3G 连接时,WebSocket 连接失败

我编写了一个使用烧瓶套接字使用 WebSockets 的小应用程序。我目前直接从 gunicorn 为该站点提供服务(使用来自烧瓶套接字的 gevent 工作人员),前面没有 nginx 或任何东西,因为这只是一个小实验。在连接到接入点的同时尝试在我的智能手机上访问该站点时,该站点运行正常。另一方面,当使用 3G 连接时,网站已加载但 websocket 连接失败。

我在服务器日志中得到这个:

我想这可能与中间的代理服务器弄乱了 Web 套接字头或其他东西有关,所以我尝试在客户端将 JS 代码更改为“wss://”,但这不起作用all(没有客户端可以建立连接)。

我会感谢任何可以为我提供任何想法的人。

0 投票
2 回答
1974 浏览

python - 如何将flask和flask_sockets集成到在uwsgi下运行的单个应用程序中

我有一个在 nginx 后面运行 uwsgi/flask 的现有应用程序。我想将 websockets 集成到同一个应用程序中。Flask sockets看起来很有希望,所以我正在尝试。

Flask sockets 简要提到了运行gevent-websocket,但没有提供示例代码来将现有应用程序集成到此设置中。我还尝试了几种 gevent-websocket 与我现有的烧瓶应用程序的组合,但我仍然得到了 500 个。此外,如果我能找出 500 的性质,那就太好了,但错误不会像现有的烧瓶应用程序那样出现在 uwsgi 日志中。因此,如果您有任何调试下降来显示跟踪转储,那就太好了。

谁能帮我获得一个使用此设置的简单回声路由?提前致谢。

仅供参考,我目前正在使用:

  • uWSGI 1.0.3-debian
  • 蟒蛇2.7.3
  • 烧瓶 0.10.1
  • nginx 1.4.3
  • 烧瓶插座 0.1
0 投票
0 回答
847 浏览

python - 如何使用烧瓶网络套接字?

我正在尝试将 flask 和 flask_sockets 用于项目。我不了解这里的事件模型,并且缺乏详细的文档也无济于事?你能向我解释一下到底发生了什么,以便我可以有效地使用它。

编辑:我正在改写这个问题。那么这种格式如何转换为其他回调驱动框架中的 onconnect onmessage 和 onclose 事件处理程序?

0 投票
1 回答
1384 浏览

python - 从视图中发出 websocket 消息

我正在玩 websockets 以查看是否可以将轮询更新替换为项目。我正在使用 Flask-Sockets,我想通过 Flask 视图发出更新。

例如

我环顾四周,没有发现类似的东西。这件事可能吗?

0 投票
1 回答
2745 浏览

python - Flask-Socketio:命名空间 keyerror.,获取已连接客户端的列表

我在运行 Flask 的服务器上使用 Flask-Socketio,我的客户端运行 javascript。我所有的客户端都使用 namespace 连接到服务器'/test'。在客户端执行某个操作后,我希望客户端触发服务器上的一个函数,该函数遍历所有连接的客户端。我正在使用以下代码段来遍历连接的客户端列表:

每个连接都有一个在连接时分配给它的“id”键。

但是,有时服务器会给出以下错误,表明未找到命名空间键:

我不明白为什么会出现此错误,因为我所有连接到服务器的套接字都连接在同一个命名空间上。此外,仅在一小部分函数调用期间会遇到此错误。为什么这个错误不一致?

有没有更好的方法可以遍历连接的客户端列表?

0 投票
1 回答
1526 浏览

python - 如何连接到 Flask-WebSocket 服务器?

我正在按照本教程尝试并Flask-WebSockets在我的应用程序中使用。

http://blog.miguelgrinberg.com/post/easy-websockets-with-flask-and-gevent

我的问题是我不知道如何正确连接到服务器。

当我调用我的烧瓶应用程序时,它们的形式为:

http://localhost:80/myapp/<route_goes_here>

我的应用程序结构如下:

__init__.py

视图.py

鉴于我的设置,我应该把这条线放在哪里:

我也不确定在以下行中放置什么地址index.html

索引.html

此文件中的代码与此相同(https://github.com/miguelgrinberg/Flask-SocketIO/blob/master/example/templates/index.html

我试过了http://localhost:80/test,没有得到任何回应。我不确定是否namespace应该是地址的一部分。

谢谢你的帮助。

0 投票
0 回答
583 浏览

sockets - 脱离上下文使用 Flask Sockets 请求/ws

我希望能够脱离上下文使用 Flask 请求。

我意识到从 Flask 0.10 开始就有一个 decorator( @copy_current_request_context) 可以做到这一点,这就是我使用该装饰器来尝试修改flask-socket 的方式。特别是作为flask-sockets@socket.route一部分的 装饰器:

虽然这产生的错误对我来说确实有意义 - 我假设有一种方法可以做我想做的事情。:

我尝试将请求传递给装饰器,但这不起作用。

为了提供更多上下文,我尝试将 添加request.environ['wsgi.websocket']到 Sockets 对象内的 dict 中,以便能够访问该ws变量(我理解为请求环境)。

在更高的层次上,我希望能够ws.send()从函数或视图以外的地方进行操作@route——也许是另一个可以访问套接字对象实例的线程。

我已经用Socket-IO做了类似的事情——socketio对象是你需要能够send()recieve()数据的所有东西——但是对于 Sockets,你似乎需要 ws 对象,这是request.environ['wsgi.websocket']

0 投票
0 回答
280 浏览

python - 测试 flask_sockets 应用程序

我正在使用flask_sockets库构建一个应用程序。我该如何测试它?

这是我要为其编写单元测试的代码示例:

我已经使用了这个 git repo中的代码。