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

时间:2021-06-05 20:34:35

标签: python flask flask-socketio

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

main.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>

1 个答案:

答案 0 :(得分:1)

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

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

浏览器控制台显示:

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

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

相关问题