Python Flask-socketio 工作,没有从 JS 客户端接收数据

Posted

技术标签:

【中文标题】Python Flask-socketio 工作,没有从 JS 客户端接收数据【英文标题】:Python Flask-socketio working, not receiving data from JS client 【发布时间】:2019-01-02 15:33:59 【问题描述】:

我正在尝试使用flask-socketio 和前端的javascript socket-io 库设置一个基本的网络套接字。前端成功注册连接。但是,在 python 控制台中,我的日志消息不起作用,并且没有迹象表明服务器正在响应我的请求。

我在连接时在控制台中得到的只是: "GET /socket.io/?EIO=3&transport=polling&t=MJHl5WD HTTP/1.1" 200 - 127.0.0.1 - - [25/Jul/2018 09:58:58] "POST /socket.io/?EIO=3&transport=polling&t=MJHl5WQ&sid=b2a1f92c18e349c5a11df25e5001766c HTTP/1.1" 200 -

所以连接正常,但是,后端没有其他任何输出。

这里是 JS:

var socket=io('http://127.0.0.1:5000');
socket.on('connect',function()
    console.log("connected");
socket.emit('client_connected',data:"testsend");

);
socket.on('update',function(data)
console.log(data)
);

还有蟒蛇:

import json
import urllib3
from bs4 import BeautifulSoup
from flask import Flask, jsonify, render_template, request
from flask_socketio import SocketIO, send, emit

app=Flask(__name__)
socketio= SocketIO(app)
if __name__ == '__main__':
    socketio.run(app)
socketio.emit('update','data':"test");

@socketio.on('client_connected')
def handle_client_connect_event(data):
    print("connected")
    print(str(data))    
@socketio.on('disconnect')
def disconnected():
    print('disconnected')
@socketio.on('connect')
def connected():
    print('connected')

@socketio.on 行都不起作用,“更新”事件也不起作用。非常感谢您的帮助。

【问题讨论】:

为什么socketio.run()调用下面的事件定义?这是一个阻塞调用,您需要在调用run() 之前定义事件。 不知道!谢谢你的信息,我想就是这样!如果您将其发布为答案,我可以接受它 【参考方案1】:

事件定义在socketio.run() 下方,它启动服务器并阻止,因此它们永远不会被注册。如果您将它们移到此调用之上,它们应该可以正常工作。

【讨论】:

以上是关于Python Flask-socketio 工作,没有从 JS 客户端接收数据的主要内容,如果未能解决你的问题,请参考以下文章

[翻译] flask-SocketIO

在 beanstalk 上部署 flask-socketio

Elasticbeanstalk 上的 Flask-socketIO

Socket.io 与 flask-socketio python。如何设置套接字保持活动/超时

在线程中运行 flask-socketio

使用 Flask-socketio 和 socketIO 客户端