Python Flask-socketio工作正常,未从JS客户端接收数据

时间:2018-07-25 18:11:51

标签: javascript python websocket socket.io flask-socketio

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

我在console上获得的所有连接是: "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)
});

还有python:

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行都不起作用,并且'update'事件也不起作用。帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

事件定义在socketio.run()之下,{{1}}启动服务器并进行阻止,因此它们从未被注册。如果将这些移动到此调用上方,它们应该可以正常工作。