问题标签 [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 投票
1 回答
63 浏览

javascript - 重启 Supervisor 和对 FlaskSocketIO 的影响

在我的index.html (HTML/Javascript)我有:

在我的Server我有:

登录后,我设置session['venue_id'] = True并移至index.html. 我得到的输出是:

我的问题:初始运行后,我保持页面打开,index.html然后我的项目通过. 此时为什么我得到与上面相同的输出?我原以为在 , 之后会从 中删除,因此会被调用?stopstartsupervisorinitial connectvenue_idsessionrequest.namespace.disconnect()

有人可以向我解释一下这里的事件顺序吗?

谢谢

0 投票
0 回答
161 浏览

python - flask-socketio 没有看到被覆盖的资源

这是一个简单的 flask-socketio 服务器:

它像这样连接:

所以当我打开页面时,我在浏览器控制台中看到:

但是当我在前端更改资源时:

在后端:

我只看到这个

所以什么都不会发出。此外,后端不调用print('connected').

资源覆盖有什么问题?

0 投票
2 回答
57 浏览

javascript - 重建 websocket 连接

我有点担心我目前connections对我的websocket.

在我的一页中,我app有:

在这之后我通过了receive一些然后移动到另一个页面。在第二页运行后,我再次返回到上面代码再次运行的第一页。datasocketsocket

我想知道这是否会导致任何类型的问题?我是否应该connect在更早的阶段尝试这样connection不会多次制作?如果是这样,是否可以通过socket变量传递javascript

flask-socketioserver.

谢谢你的帮助。

0 投票
1 回答
724 浏览

python - 带有 Werkzeug 的 Flask-socketio

我的旧代码,我使用 werkzeug run_simple 来运行应用程序。现在,我需要使用 socketio,如何将 run_simple() 更改为 socketio.run()。

我的旧代码:

我试过了:

但它没有用。谁能帮帮我!

0 投票
1 回答
3939 浏览

python - 将 Flask-SocketIO 与 Flask-Login 和 HTTP 基本身份验证一起使用

我正在尝试为内部监控实现一个非常简单的网页。它应该显示一些数据,这些数据通过socketio实时更新。服务器在后台运行一个线程,该线程获取数据并将其转发给客户端。

我想用登录表单保护页面。为了简单起见,我选择了 HTTP Basic Auth,主要是因为我不想设计登录表单。

我做了以下事情:

  • 在 下@login_manager.request_handler,我检查request.authorization。如果它有效,我返回一个经过身份验证的User对象。
  • 在 下@login_manager.unauthorized_handler,我触发了身份验证对话框。
  • '/'页面受保护@login_required
  • 我还拦截了该socketio.on('connect')事件并在current_user那里检查。如果未通过身份验证,我将断开连接。

这是整个工作示例:

  • 如果我使用带有自签名证书的 HTTPS,此设置是否安全?
  • Flask-Login文档强调要实际登录用户,我必须明确调用login_user. 我不这样做,但我可以登录。这怎么可能?

UPD:在可预见的未来我将成为唯一的用户,所以我最关心的是是否可以拦截和解密流量,或者通过 Websocket 连接发送数据而无需经过身份验证。

0 投票
1 回答
9989 浏览

python - Flask:一个 RESTful API 和 SocketIO 服务器

背景

我正在尝试使用 Flask-RESTful 扩展创建一个简单的 REST API。此 API 将主要用于管理简单服务的 CRUD 和用户身份验证。

我还尝试使用 Flask-SocketIO 扩展创建一些 Web 套接字,这些用户将能够连接到这些用户并查看与使用该服务的其他人相关的某些数据的实时更新。因此,我需要知道这些用户经过身份验证并被授权连接到某些套接字。

问题

但是,我在设置时遇到了一些麻烦。似乎我无法让这两个组件(REST API 和 SocketIO 服务器)在同一个 Flask 实例上一起工作。我之所以这么说是因为当我运行以下命令时,REST API 或 SocketIO 服务器都可以工作,但不能同时工作:

问题

这种设置的典型解决方案是同时运行两个不同的 Flask 实例吗?例如,我的 SocketIO 服务器是否必须向我的 REST API 发出请求才能检查特定用户是否经过身份验证/授权以连接到特定套接字?

0 投票
1 回答
1160 浏览

angularjs - 从 Ionic 客户端请求时,Flask + Flask-SocketIO 为路由返回 404

我正在开发一个实时聊天和照片共享应用程序。我使用 Flask 作为我的服务器端来构建 RESTful Web 服务,并使用 Ionic 框架 (AngularJS) 在移动设备上构建我的客户端。

我有一个 Web 服务端点 [GET] /feeds/user_id 返回用户的新提要。当我使用以下代码行初始化我的应用程序时,我可以正确地从 localhost 和我在移动设备上运行的应用程序检索数据。

当我使用实时聊天构建应用程序时,我使用 Flask-SocketIO 并将我的应用程序的初始化方式更改为以下方式,如官方文档中所述。

但是,我现在无法通过上述初始化方式从我的移动应用程序中检索数据。示例日志之一是:

但是,我可以使用相同的链接从我的本地主机和同一网络中的另一台机器检索数据,因此我确信服务器正在侦听所有公共 IP。我也禁用了我的防火墙。

我的代码片段如下:

任何帮助表示赞赏!

更新:当我只使用 app.run() 时,日志如下:

正如 Miguel 所提到的,这是一个奇怪的日志,但它可以工作,所以感谢 Flask 的健壮性!

我还尝试在 iOS 上运行我的应用程序,效果很好。现在我怀疑这是 Android 平台上的 Ionic 框架的问题,或者只是在我的设备上。我的设备是 Nexus 7 Gen 1,运行 Android 5.1.1。

0 投票
1 回答
2326 浏览

javascript - Flask SocketIO - CORS 问题

我正在尝试使用 Flask-SocketIO 将 websocket 功能添加到我的应用程序中。

我的应用程序架构是高度解耦的,因此我想使用一组不同的服务器来处理 websocket 的东西。但是,在我的测试中,我使用的是具有不同端口的同一台服务器。

当我尝试使用 JavaScript 连接时:

我得到错误:

所以为了缓解这个问题,我做了一些 CORS 的东西并在这里添加了crossorigin定义:http: //flask.pocoo.org/snippets/56/

我不会发布装饰器的代码,因为我没有从上面的网页上更改它。

然后在我的端点上,我使用了装饰器:

我也试过:

在加载 /socket/ 端点的 HTTP 响应标头中,我可以看到标头:

但我仍然收到 CORS 错误。有人有什么想法吗?:)

0 投票
2 回答
2595 浏览

python - flask 和 flask-socketio flush 都会发出事件

你如何刷新一个flask-socketio发出事件,以便多行流向客户端,而不是多行同时通过?

我正在使用 Flask 和 flask-socketIO 制作一个 Web 应用程序,让用户可以与开源国际象棋 AI 下棋,比如 gnuchess 和 Crafty。国际象棋 AI 将他们的“想法”作为标准输出打印到服务器终端,但我正在使用 flask-socketIO 将这种想法发送给用户。

一切都已设置好并正常工作,但我遇到的问题是,每一行思路都集中在一个大块中,而不是在 AI 打印时输出每一行。

例如,在与 gnuchess 比赛时,服务器会打印出这样的想法:

这些线流到我的服务器。在客户端,我发出 AI 行,它以 ul 的形式显示给客户端(现在),如下所示:

以下是相关代码:

这里的问题是所有 socketio.emit 事件在烧瓶路由返回后作为一大块文本出现。也许他们被困在缓冲区中?有没有办法把它们冲洗掉?

"print "AI thinking:" + line 代码将多行文本流向服务器,一次一行,就在 AI 输出它们时。但是,socketio.emit 代码全部立即传递给客户端,而不是逐行流出。

有任何想法吗?

0 投票
0 回答
1361 浏览

flask - 如何集成烧瓶socketio和烧瓶脚本

我一直在关注 miguelgrinberg 的例子。运行时它工作正常。我提交给heroku并且工作正常。但是,当我尝试与 flask-script 集成时,出现此错误:

文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/flask_socketio/init .py ”,第27行,调用 raise RuntimeError('你需要使用gevent-socketio服务器.') RuntimeError:您需要使用 gevent-socketio 服务器。

我集成的方式是使用以下代码: