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 已执行”。到终端。