Flask socketIO.on_event 不执行处理函数

问题描述 投票:0回答:0

client 使用 index.html 中的这个 js 代码发出“GetLevel”:

var socket = io();
socket.on('connect', function() {
    socket.emit('GetLevel', "DefaultWorld");
});

服务器应在客户端向服务器发送“GetLevel”后执行事件处理函数“SendLevel”。 服务器代码:

from flask import Flask, render_template
from flask_socketio import SocketIO

class Server:
    def __init__(self):
        
        self.LevelRegistry = {}

        self.App = Flask(__name__)
        self.App.config['SECRET_KEY'] = KEY
        App = self.App

        self.Socketio = SocketIO(App, cors_allowed_origins='*')
        Socketio = self.Socketio

        Socketio.on_event('GetLevel', self.SendLevel)    #Registering handlerfunction

        @App.route('/')
        def root():
            return render_template('index.html')
        

    def SendLevel(self, Level):    #handlerfunction to be executed
        print("SendLevel executed.")

    def Run(self):
        self.Socketio.run(self.App, host="localhost")

server = Server()
server.Run()

客户端正常访问根目录下的网页,执行上述javascript snipped。正如烧瓶的控制台output所示:

127.0.0.1 - - [09/Apr/2023 23:44:35] "GET / HTTP/1.1" 200 -

尽管如此,SendLevel 并未执行,因为它会打印出“SendLevel 已执行”。到终端。

python-3.x class socket.io flask-socketio
© www.soinside.com 2019 - 2024. All rights reserved.