问题标签 [flask-socketio]

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 投票
2 回答
2249 浏览

python - 使用 flask-socketio 和多​​处理进行编程 thorws 'LoopExit:此操作将永远阻塞'

第一:我是python的绝对初学者,我以前写过PHP,所以如果我遇到了一些错误,请告诉我。

我正在写一个应用程序。它应该通过 websockets 提供它的信息。我为此选择了flask-socketio。在后台我想处理数据。因为我想让应用程序变小,所以我决定反对像 Celery 这样的解决方案。

我已将代码缩短为:

开始时,我收到以下消息:

所以后台进程正在工作,它会响应 http 请求(127.0.0.1 - - [2015-09-30 00:06:23] "GET / HTTP/1.1" 200 120 0.001860)。但是只是忽略一个错误,因为它似乎有效,这对我来说似乎不是一个解决方案。有谁可以告诉我我在这里做错了什么?

如果你说我不能那样做你能告诉我为什么吗?我想学习和理解我做错了什么。

我读了一些关于monkeyepatching的东西,但是所有建议的东西都只是抛出了更多或其他错误。我认为最好解决第一个错误而不是盲目地尝试修复。

问候

更新

我为猴子补丁添加了 2 行,这就是我得到的:

开始时根本没有输出。在 hittinc ctrl-c 几次之后,我得到了背景的东西输出。这一直持续到我通过 SIGKILL 杀死 python 进程

更新 2

我希望看到的是

在脚本运行之后。但是在我按下 ctrl-c 之前什么都没有发生。

0 投票
1 回答
7717 浏览

python - 如何使用flask-socketio将消息从烧瓶路由发送到套接字

我想实现以下场景:

  • 用户浏览我们的网站
  • 用户输入一个比特币地址。
  • 向服务器创建一个 websocket,并传递地址。
  • 服务器向 Blocktrail注册回调
  • 当触发回调(Blocktrail 看到付款)时,我们会向浏览器发送一条消息。
  • 更新用户正在浏览的页面以显示收到的消息

我正在使用Blocktrail API 中的 webhook来“监听”一个事件,即接收地址上的硬币。

现在,当事件发生时,API 会对我的 URL 进行 POST。这应该向使用 socket.io 连接到我的服务器的浏览器发送一条消息(例如“在区块链上看到的付款”)

所以问题是,

如何使用flask-socketio将消息从路由发送到套接字

伪代码:

0 投票
1 回答
1348 浏览

python - 安装烧瓶socketio时遇到问题

我正在尝试使用 pip 安装 Flask-socketIO :

但最后我面临这个错误:

0 投票
0 回答
596 浏览

python - 烧瓶应用程序中socketio中的尾子进程

我正在使用以下示例在烧瓶中利用 socketio 库:

https://github.com/miguelgrinberg/Flask-SocketIO/tree/master/example

我想通过 执行命令subprocess(),并将其输出发送socketio到后台线程。

我在这里使用 ping 作为示例。以下似乎不起作用:

事实上,如果我尝试socketio.emit()在 while 循环之外使用该函数,如示例所示。

它似乎不起作用,这让我很困惑。

0 投票
1 回答
705 浏览

python - 导入 Flask-SocketIO 实例

我正在尝试将 Flask-SocketIO 集成到我的应用程序中并且遇到了不好的时间。我不明白如何在同一上下文中传递 SocketIO 实例。抱歉,我无法为您提供确切的代码或错误日志 atm。

任何帮助将不胜感激。如果您对这张票有任何疑问,请随时提问。

run.py (<-- 应用程序从这里开始)

应用程序/__init__.py

应用程序/dalet/LotusOrb.py

很明显,我只需要执行socketio.emit。应用程序启动,但客户端 JS 不显示任何消息。(我 100% 确定在客户端 JS 中,如果我在 app/ init .py 中编写代码,它可以工作)输出中没有任何错误,错误可能出在 socketio 变量的实例中。

我的导入有什么问题?

编辑:我已经更新了代码。

0 投票
1 回答
1555 浏览

python - Python Flask 服务器:AssertionError("write() before start_response()")

我发现 Miguel Grinberg 的工作非常鼓舞人心,因此我选择在一个大学项目中使用 Flask 和 FlaskSocketIO 库来制作一些 Java 工具(相当复杂的东西,但出于好奇,我正在研究这个项目)。

基本上,python 部分只是创建一个命令,在后台线程中执行它并将每个日志推送到屏幕,这要归功于这个伟大的 Flask SocketIO 库。

所描述的所有内容都很好,但是当我想通过第二次调用相同的 URL 来重新启动任务时遇到问题,我收到了这个错误,我没有找到任何线程,所以我认为它是微不足道的或非常讨厌的(但是中间什么都没有!)。有人有想法吗?

而且,当然,这是我的代码(灵感来自 Miguel 的示例,因为我无法自己设置它......)

如果你需要完整的代码,这里是repo

0 投票
1 回答
735 浏览

rabbitmq - 在 flask-socketio 处理程序中调用 rabbitmq channel.start_sumption() 后无法发出

我正在尝试从flask-socketio 事件处理程序中收听rabbitmq 队列,以便可以向Web 应用程序发送实时通知。到目前为止我的设置:

服务器

浏览器

如果我注释掉服务器代码底部的“channel.start_sumption()”行并加载浏览器页面,我会成功连接到 flask-socketio 并在我的控制台中看到 {data: "Connected"}。

当我取消注释该行时,我在控制台中看不到 {data: "Connected"}。然而,当我向通知队列发送消息时,rabbit_callback 函数会触发。我看到我的消息打印到服务器控制台,但发出调用似乎不起作用。服务器或浏览器中没有错误。非常感谢任何建议。

谢谢!

0 投票
1 回答
2149 浏览

javascript - Flask-Socket.IO CORS 问题

使用 socket.io 连接到我的 Flask 应用程序时出现此错误

GET http://127.0.0.1:5000/socket.io/?EIO=3&transport=polling&t=1450525025659-286 Request.create@socket.io.js:2919Request@socket.io.js:2842XHR.request@socket.io .js:2773XHR.doPoll@socket.io.js:2803Polling.poll@socket.io.js:3192Polling.doOpen@socket.io.js:3136Transport.open@socket.io.js:2313Socket.open@socket.io .js:1743Socket@socket.io.js:1625Socket@socket.io.js:1560Manager.open.Manager.connect@socket.io.js:299(匿名函数)@socket.io.js:564:3004/: 1 XMLHttpRequest 无法加载http://127.0.0.1:5000/socket.io/?EIO=3&transport=polling&t=1450525025659-286。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问源“ http://localhost:3004 ”。

我试过这个解决方案

但它没有用。我也试过 Flask-Cors 模块

并没有收获。任何帮助,将不胜感激

0 投票
2 回答
985 浏览

python - How to escape HTML characters in Flask-SocketIO?

Based on the example on GitHub, this is my Python script:

This is the HTML template:

Everything works fine. But the problem is user can use any HTML tags in the messages.

For example:

The example

I think it's little dangerous. Because any users can also run some JavaScript code and broadcast it. Then every clients will run it.

Is there's anyway can use Jinja auto escape the output, or there's any other ways?

0 投票
1 回答
2979 浏览

python - 如何在烧瓶socketio中保持活力?

我的烧瓶项目中有一个错误。socketio 客户端经常与我的 flask-socketio 服务器断开连接。他们将在几分钟后重新连接。我想保持连接始终有效,我该怎么做?我该如何解决这个错误?