Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >通过python-socketio发送数据,但无法接收flask socketio上的数据

通过python-socketio发送数据,但无法接收flask socketio上的数据
EN

Stack Overflow用户
提问于 2020-07-16 07:17:14
回答 1查看 2.6K关注 0票数 1

我正在尝试从我使用python-socketio的客户端发送数据,如下所述

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#Client.py
import time
import socketio
sio = socketio.Client(engineio_logger=True)
start_timer = None

# if __name__ == '__main__':
sio.connect('http://127.0.0.1:3000')
sio.wait()
sio.emit('connect', {"Data": "Device_id"})

并尝试在使用flask-socketio的服务器上执行以下代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#Server.py
from flask import Flask, render_template, request, jsonify
from flask_socketio import SocketIO
app = Flask(__name__)
# app.config['SECRET_KEY'] = "Social Distance Secret"
socket_app = SocketIO(app)


@socket_app.on('connect')
def handle_id(data):
    print(data)
    print(request.sid)

if __name__ == '__main__':
    socket_app.run(app, debug=True, host='127.0.0.1', port=3000)

我可以接收sid,但在发送到WebSocket时无法获取在client.py中给出的参数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Error Server.py
Traceback (most recent call last):
  File "C:\Users\varul.jain\AppData\Local\Programs\Python\Python36\lib\site-packages\engineio\server.py", line 545, in _trigger_event
    return self.handlers[event](*args)
  File "C:\Users\varul.jain\AppData\Local\Programs\Python\Python36\lib\site-packages\socketio\server.py", line 721, in _handle_eio_connect
    return self._handle_connect(sid, '/')
  File "C:\Users\varul.jain\AppData\Local\Programs\Python\Python36\lib\site-packages\socketio\server.py", line 626, in _handle_connect
    self.environ[sid])
  File "C:\Users\varul.jain\AppData\Local\Programs\Python\Python36\lib\site-packages\socketio\server.py", line 708, in _trigger_event
    return self.handlers[namespace][event](*args)
  File "C:\Users\varul.jain\AppData\Local\Programs\Python\Python36\lib\site-packages\flask_socketio-4.3.1.dev0-py3.6.egg\flask_socketio\__init__.py", line 283, in _handler
    *args)
  File "C:\Users\varul.jain\AppData\Local\Programs\Python\Python36\lib\site-packages\flask_socketio-4.3.1.dev0-py3.6.egg\flask_socketio\__init__.py", line 711, in _handle_event
    ret = handler()
TypeError: handle_id() missing 1 required positional argument: 'data'


# Errors client.py:
Attempting polling connection to http://127.0.0.1:3000/socket.io/?transport=polling&EIO=3
Traceback (most recent call last):
  File "C:/Users/varul.jain/Desktop/people_counter/listenn.py", line 12, in <module>
    sio.connect('http://127.0.0.1:3000')
  File "C:\Users\varul.jain\AppData\Local\Programs\Python\Python36\lib\site-packages\socketio\client.py", line 279, in connect
    six.raise_from(exceptions.ConnectionError(exc.args[0]), None)
  File "<string>", line 3, in raise_from
socketio.exceptions.ConnectionError: Unexpected status code 401 in server response

任何建议都会很有帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-17 13:57:02

第一个问题是您正在使用connect事件,但此事件是保留的。将事件名称更改为其他名称:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@socket_app.on('connected')
def handle_id(data):
    print(data)
    print(request.sid)

第二个问题是,在您的客户端调用wait(),它会一直阻塞到连接结束,因此您的emit()调用永远不会运行。在等待之前发送emit:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sio.connect('http://127.0.0.1:3000')
sio.emit('connected', {"Data": "Device_id"})
sio.wait()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62929461

复制
相关文章
通过异步方式发送和接收数据(tcp异步收发数据)
服务端 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.Threading;
liulun
2022/05/09
1.4K0
GET/POST接收或发送数据的问题
SpringCloud实战视频下载 在文章开始,先来回忆一下GET、POST这两种请求方式的区别。 Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。 0、GET请求,请求
企鹅号小编
2018/01/25
1.4K0
Flask-SocketIO Demo
最近在做一个Flask程序,其中一个需求是前端传递参数,后端接收到后调用命令行,并将控制台打印的日志实时推送到前端显示。经过搜索得知想要实现该功能大概有2种方式:1种是利用调度工具Celery,另1种就是Websocket。 准备 安装Flask-SocketIO库 $ pip install flask-socketio 编写一个Flask程序 from flask import Flask, render_template, request from flask_socketio import Sock
Naraku
2021/07/28
7380
接收前台ajax交互数据【Flask】
在进行删除操作时,需要向后端发送某条记录的唯一性标识, 小编在这里了解不多,这里就用了ajax请求 【flask接收的ajax请求往往是发送POST请求的JSON类型数据】
来杯Sherry
2023/05/25
4570
尝试通过MQTT向thingsboard上的设备发送数据
在thingsboard demo网站上注册一个用户 https://demo.thingsboard.io/signup
lilugirl
2020/02/18
4.5K0
尝试通过MQTT向thingsboard上的设备发送数据
Flask使用flask_socketio实现websocket
下面是案例,是我自己用来测试使用的,可以直接运行的。详细的使用请看官网 (opens new window)
编程黑洞
2023/03/06
2.2K0
Flask-SocketIO 文档译文
專 欄 ❈译者:詹聪聪 投稿 邮箱: zhancongc@gmail.com❈—— 序言: 本人工作中需要用到flask-socketio,在学习英文文档时发现,flask-socketio目前并没有相关的中文文档。斗胆利用业余时间将这个库的英文文档翻译出来,希望能够帮助那些没有时间或精力研习英文文档的朋友。鉴于水平有限,翻译错误在所难免,还望各位不吝赐教。任何问题都可以发送邮件给我。(email: zhancongc@gmail.com) 注意:译者所用的flask-socketio版本号是:2.7.
Python中文社区
2018/01/31
4.4K0
flask_socket_io中报错RuntimeError: You need to use the eventlet server. See the Deployment section of t
经测试发现,如果是用uwsgi启动,采用eventlet模式,process只能设置1个,且会造成线程堵塞,如果设置超过1个,也会报上面的错误
用户1214487
2018/09/27
1.9K0
UDP协议发送/接收数据实现
UDP 是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接,简单来说,当客户端向接收端发送数据时,客户端不会确认接收端是否存在,就会发出数据。同样接收端在接收数据时,也不会向发送端反馈是否收到数据 由于使用 UDP 协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据传输 例如:视频会议通常采用 UDP 协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。但是在使用 UDP 协议传送数据时,由于 UDP 的面向无连接性,不能保证数据的完整性,因此在传输重要数据时不建议使用 UDP 协议
ITer.996
2022/11/22
2.5K0
UDP协议发送/接收数据实现
TCP协议发送/接收数据简单实现
TCP 协议是面向连接的通信协议,即传输数据之前,在发送端和接收端建立逻辑连接,再传输数据。它提供了两台计算机之间的可靠无差错的数据传输。在 TCP 连接中必须要明确客户端与服务器,由客户端向服务器发送连接请求,每次连接的创建都需要经过 “三次握手” 三次握手:TCP 协议中,在发送数据的准备阶段,客户端与服务器之间的三次交互,以保证连接的可靠
ITer.996
2022/08/30
1.4K0
TCP协议发送/接收数据简单实现
关于串口数据的发送和接收(调试必备)
对于串口的数据发送和接收,大多是都是利用串口中断来进行的,但是这样对于编程方面有一定要求,并且程序也不太好写,比如说,如果让你随意接收一段数据,然后利用串口将它发送出来,第一个需要考虑的问题就是接收数据的长度,怎么才知道一段数据是否结束?或者说如果串口助手上面没有可以在数据末尾加上结束标志的时候,你如何知道数据的结束?,这必然牵涉到一定的编程技巧。但是,之前在接触C语言的时候,我们就利用过printf和Scanf,那么我们能否利用它们?如果能够利用的话,那么就很方便了。
全栈程序员站长
2022/09/14
5.3K0
关于串口数据的发送和接收(调试必备)
Flask 框架:运用SocketIO实现WebSSH
Flask 框架中如果想要实现WebSocket功能有许多种方式,运用SocketIO库来实现无疑是最简单的一种方式,Flask中封装了一个flask_socketio库该库可以直接通过pip仓库安装,如下内容将重点简述SocketIO库在Flask框架中是如何被应用的,最终实现WebSSH命令行终端功能,其可用于在Web浏览器内实现SSH命令行执行。
微软技术分享
2022/12/28
1.9K0
Flask 框架:运用SocketIO实现WebSSH
Python 实战 udp网络程序-发送、接收数据
1. udp网络程序-发送数据 创建一个基于udp的网络程序流程很简单,具体步骤如下: 创建客户端套接字 发送/接收数据 关闭套接字 实验拓扑 在windows端,采用NetAssist网络调试
Devops海洋的渔夫
2019/06/02
4.4K0
Flask 之SocketIO库实现绘图表
Flask 默认提供了针对WebSocket的支持插件from flask_socketio import SocketIO 直接通过pip命令安装即可导入使用,前端也需要引入socketIO库文件,其网站首页是:https://socket.io/
微软技术分享
2022/12/28
8710
Flask 之SocketIO库实现绘图表
联邦学习在视觉领域的应用,揭秘2020年AAAI人工智能创新应用奖获奖案例!
本文会通过一个获得了2020年AAAI人工智能创新应用奖(也是第一个基于联邦学习的人工智能工业级奖项)的案例来向大家介绍!
CV君
2021/06/08
1.5K0
联邦学习在视觉领域的应用,揭秘2020年AAAI人工智能创新应用奖获奖案例!
thingsboard入门通过mqtt发送数据
thingsboard支持三种传输遥测数据方式:http、mqtt以及coap,本文介绍如何通过mqtt协议推送数据到server端,
johnhuster的分享
2022/03/28
2.6K0
thingsboard入门通过mqtt发送数据
接收发送消息与数据库交互
线上的接口的坑太多了。不如自己写一个吧。实际的业务场景中,可以用户回复关键词,可获取系统中相关的消息。
一粒小麦
2019/07/18
8200
接收发送消息与数据库交互
联邦学习在视觉领域的应用,揭秘2020年AAAI人工智能创新应用奖获奖案例!
联邦学习是如何应用在视觉领域的? 本文会通过一个获得了2020年AAAI人工智能创新应用奖(也是第一个基于联邦学习的人工智能工业级奖项)的案例来向大家介绍! 本案例是联邦学习在视觉、物联网、安防领域的实际应用,对分散在各地的摄像头数据,通过联邦学习,构建一个联邦分布式的训练网络,使摄像头数据不需要上传,就可以协同训练目标检测模型,这样一方面确保用户的隐私数据不会泄露,另一方面充分利用各参与方的训练数据,提升机器视觉模型的识别效果。 以下内容节选自《联邦学习实战(全彩)》一书! ---- --正文-- 在
博文视点Broadview
2023/05/19
7260
联邦学习在视觉领域的应用,揭秘2020年AAAI人工智能创新应用奖获奖案例!
点击加载更多

相似问题

如何在python-socketio上发送消息

20

python-socketio客户端无法获取公共数据,但NodeJS套接字。to客户端无法获取公共数据

157

Flask Socketio不更新数据

118

python-socketio在flask服务器上跟踪文件下载时并不总是发出

10

无法在Python2.7中导入socketio (python-socketio)

154
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文