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

javascript - Websockets“无效帧头”错误Flask-Socket IO

我正在使用flask-socketio,一切都很好,但是当使用emit发送一个值时,chrome开发人员工具显示错误,但一切都按预期工作。

“与 'ws://127.0.0.1:5000/socket.io/?EIO=3&transport=websocket&sid=240eada2f8bb4ce889ae90ffbf9cb6ea' 的 WebSocket 连接失败:帧头无效”

发送输入字段的值工作正常,但我要发送的是输入值的子字符串。已检查子字符串的类型,它是字符串。

javascript:

烧瓶:

使用此代码,值被发送到烧瓶服务器,但 chrome 显示错误。如前所述,一切正常,但只是想知道错误的原因。

当我将值更改为输入字段的值时,不会显示错误。

0 投票
1 回答
1908 浏览

python - Python和Socket.IO - 连接后应用程序挂起

我正在开发一个 python 应用程序。基本实现需要 Raspberry Pi 连接到主服务器并共享消息。服务器将运行一个 python 应用程序来分析数据并将信息返回给 Raspberry Pi。

我正在使用 python-socketio 作为服务器部分,使用 socketio.client 作为 Raspberry Pi 代码来实现这个系统。

我的问题是我能够连接到服务器并收到响应消息,但随后程序挂在客户端。

我的服务器代码是:

至于客户端部分,我正在使用此代码:

出于某种原因,我得到了带有分配 ID 的服务器响应,但是程序永远不会到达该行

我最初认为这与命名空间有关,但由于打印指令从未发生,我不明白我做错了什么。

编辑

我注意到如果 on_server_response 我尝试发出消息 Hello with

我能够将消息发送到服务器并得到回复。我现在不明白的是,如何在类定义之外的主程序上发出事件。

0 投票
1 回答
1495 浏览

javascript - 服务器创建后 Python SocketIO 发出事件

我有一个使用 php 和一个修改文件夹的 python 脚本的 web 项目。我想基于例如在网站上执行一些 javascript。在 python 脚本中创建文件夹。

我的想法是使用 python socketio。我有基本的连接通知工作,并且网站上的 js 发出的信息也由 js 处理。

问题是启动 eventlet 服务器后我无法发出任何事件。我尝试设置异步模式,但没有得到想要的结果。

到目前为止,这是我的代码:


更新:

我开始使用以下代码中的线程:(使用这样的线程有问题吗?或者其他更好的方法?)

现在的问题是sio.emit('mes', 'foo ' + str(count))发出消息 - 但浏览器仅每 20~30 秒捕获一次,然后处理所有丢失的事件。从开发控制台查看带有框架的图片。

网络框架

0 投票
0 回答
183 浏览

flask - Flask-Login 和 Flask-SocketIO current_user.is_authenticated 问题

我正在使用 Flask-Login 登录用户,并且希望能够在用户手动注销 Flask 应用程序之前关闭浏览器时注销用户(我想跟踪会话时间)。

这可以通过 Flask-SocketIO 来完成:

注意,您需要按照 SocketIO 的文档运行客户端 JS

关闭浏览器大约一分钟后,disconnect_user 方法运行并打印“logged_out OK: True, current_user.is_authenticated: False”。一切都很好,但是当我再次打开浏览器并按照下面调用 current_user.is_authenticated 时,它返回 True!

主页.html:

对我来说似乎很奇怪 current_user.is_authenticated 显然是 False,然后为相同的服务器会话但不同的浏览器会话返回 True。知道发生了什么以及如何解决这个问题吗?

根据要求的登录名和用户模型代码:

0 投票
1 回答
1121 浏览

python - 使用 flask-socketio 和 eventlet 更新每个用户的特定数据

我正在创建一个 Web 应用程序,它应该实时更新推送到数据库的读数,为此我必须让一个方法在用户访问页面时在后台运行。数据是特定于用户的,因此仅添加后台线程无济于事。不过,困难的部分是我需要能够在按下按钮时停止线程,并在使用不同的数据后立即重新启动它。我尝试使用 eventlet gunicorn 和 flask-socketio 创建一个看起来有点像这样的解决方案:

我的问题是,虽然代码有效,并且它确实更新了前端,但我似乎无法弄清楚如何专门为一个用户创建这个线程(如果有必要的话)。以及如何从另一个套接字方法停止线程并在其位置启动一个新方法。

0 投票
1 回答
1281 浏览

python - 如何使用 Python 获取大文件的实时复制进度?

我从高处和低处搜索过,每次我发现看起来很有希望的东西都没有被淘汰。

最终,我想从 python 内部获取 linux 机器上文件副本的实时进度。我将采用该进度并将其发送到带有 Flask-SocketIO 的客户端网页,可能是线程化以避免阻塞。

我不介意它是 rsync、copy 还是任何其他方式……(shutil 等)来处理实际的副本。我只想要一个钩子来通过套接字推送更新。

到目前为止,我发现这是最有希望的。但是,我不太了解它的控制台打印机制,因为当我尝试将输出打印到文件或只是常规 Python 打印时,它一次只输出一个字符。

来自这个 SO 问题:Getting realtime output using subprocess

但是,这会通过标准输出报告输出。我想在一个变量中捕获这个输出并发出它。

标准输出进度如下所示,其中一行不断更新: large_file.tar 323,780,608 19% 102.99MB/s 0:00:12 当我打印名为“out”的变量时,我得到一个打印到屏幕的单个字符循环一遍又一遍的新线。

如何以可用于传输到客户端的方式捕获此信息?

有没有办法为每次刷新状态获取整行?

0 投票
1 回答
2130 浏览

flask - 如何在套接字处理程序之间共享变量?

有没有办法让多个套接字处理程序访问同一个变量?下面是一些伪代码,显示了我想要实现的目标,但我得到了一个 UnboundLocalVariable 异常shared_variable

有什么想法吗?提前致谢!

0 投票
0 回答
492 浏览

flask-socketio - flask socketio - 需要在两次睡眠之间发射两次

我有一个开发,单击客户端网页上的按钮启动服务器以移动通过 USB 连接到服务器盒的电机。我希望服务器在收到客户端请求时发出一条消息,以确认正在发生移动,使电机移动,然后一旦电机处于其最终位置并停止,服务器应该发出一条新消息达到那个效果。

我想我可以通过让客户端对页面上的文本进行第一次更改来解决这个问题,然后在移动完成时服务器将其重置,但是当我使用睡眠(或等效的)时,我会收到服务器连接错误检查电机是否仍在移动到新位置)。

有没有解决的办法?

服务器端

客户端

编辑

我已经将复杂的项目简化为最简单的案例,并且它确实有效。我让客户端更改文本,然后发出,然后服务器发出并使文本变回。所有格式(文本更改,包括文本框颜色的所有格式)都有效,但我仍然遇到以下错误:

其次是其他一些细节。看起来好像它确实做了我需要的,有没有办法处理这个没有显示的特定消息?

0 投票
1 回答
551 浏览

javascript - 使用 socketio 时实时更新图像

我正在使用 python 将每第 n 个图像从科学相机推送到网页。网页使用 更新图像.replace()。需要注意的是,这不是网络摄像头,而是科学摄像头。我正在使用开发人员软件每隔 n 秒将图像保存到服务器,然后由客户端抓取。

我正在使用 HTML、JavaScript、Jquery 和 python。

我还有一堆网络套接字(在客户端使用 socketio,在服务器端使用烧瓶),这样当单击按钮时,它会发出命令来移动连接到服务器的电机。发生这种情况时,图像会停止更新,直到服务器上的发射功能完成。

我曾考虑使用后台线程每隔 n 秒将图像推送到服务器(基于用户对刷新率的请求),但不确定这是否会有所帮助......或者从哪里开始,真的。

提前致谢。

0 投票
0 回答
570 浏览

python - 使用 Flask-SocketIO 向默认房间发送消息

我正在尝试使用 Flask-SocketIO 构建通知系统。我希望服务器应该能够独立地向任何选定的客户端发送消息。我试图通过将每个客户端保持在单独的房间(默认会话 ID 房间)中来实现这一点。但是当服务器尝试发送任何消息时,我无法在客户端上看到任何消息。以下是我的代码中的相关片段:

服务器代码:

客户代码:

我确实在服务器端看到了尝试向会话 ID 指定的房间发射的日志。但我没有看到客户端收到的消息。我错过了什么吗?SessionID 不是每个连接客户端的默认房间吗?