首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >通过python-socketio发送数据,但无法接收flask socketio上的数据

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

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

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

代码语言:javascript
代码运行次数:0
运行
复制
#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
运行
复制
#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
运行
复制
# 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 21:57:02

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

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

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

代码语言:javascript
代码运行次数:0
运行
复制
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

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档