Flask SocketIO未在服务器上接收事件



我目前正在学习Flask,最近了解了Flask SocketIO。我了解到,模块是基于事件的,这样客户端就可以与服务器端进行通信,所以我尝试过这样做。但由于某种原因,我从客户端发送的事件无法发送到服务器。我试着修复了几个小时,但我不明白我的代码出了什么问题。谢谢你帮我!

主.py

from flask import Flask, render_template
from flask_socketio import SocketIO
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
@app.route("/", methods=["GET", "POST"])
def home():
return render_template("index.html")
@socketio.on('my event')
def handle_my_custom_event(json):
print('received json: ' + str(json))
if __name__ == "__main__":
socketio.run(app, debug=True)

/templates/index.html

<!DOCTYPE html>
<html lang="en">
<h1> Chat room</h1>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.0.1/socket.io.js" integrity="sha512-q/dWJ3kcmjBLU4Qc47E4A9kTB4m3wuTY7vkFJDTZKjTs8jhyGQnaUrxa0Ytd0ssMZhbNua9hE+E7Qv1j+DyZwA==" crossorigin="anonymous"></script>
<script type="text/javascript" charset="utf-8">
var socket = io();
socket.on('connect', function() {
socket.emit('my event', {data: 'I'm connected!'});  #Creating event when connected
});
</script>
</html>

任何时候事情没有按照你认为的方式发展,你都必须寻找日志中留下的线索。在这种情况下,这意味着查看Flask进程和浏览器控制台的输出。

Flask进程没有显示任何错误,但它确实显示没有尝试Socket.IO连接。因此,实际上这不是事件没有被接收到的问题,而是没有建立连接。

浏览器控制台显示:

Uncaught SyntaxError: Private field '#Creating' must be declared in an enclosing class

你看到问题了吗?您正在使用#开始注释。这应该是JavaScript中的//

最新更新