首页 > 解决方案 > Flask SocketIO 不适用于 socketio javascript

问题描述

我正在使用 Flask socketio 和 socketio.js 制作一个实时监听 Flask 应用程序它可以在我的本地主机上的机器上运行,但是当我将它托管在 heroku 或 Repl.it 上时,我会像每秒一样在网页的控制台中不断收到此错误:

POST https://karim-listener.herokuapp.com/socket.io/?EIO=4&transport=polling&t=NaQW2AR&sid=fptAT-gOv9xkna-MAAAM 400 (BAD REQUEST)` </h4>

主文件

from flask import Flask, render_template, redirect
from flask_socketio import SocketIO, emit

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
CORS(app)


@app.route("/", methods=["GET", "POST"])
def index():
 return render_template("index.html")


@socketio.on('new-user')
def handle_message(room_num):
  emit(f"new-user")





socketio.run(app, host="0.0.0.0", port=80, debug=True)


索引.html

<!DOCTYPE html>
<html lang="en">

    <head>
    <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>
</head>
<body>
   


    <button id="pp-btn" onclick="playAndPause()">Play</button>
    <audio src="/static/f1.mp3" id="audio"></audio>

    <div class="alert">
  
</div>

<script  type="text/javascript" charset="utf-8" >
    var socket = io();
   

    

    
    socket.on("newuser", function(){
        console.log("new user")
    })

    socket.on("connect", function(){
        socket.emit("new-user")
    })


   
</script>
</body>
</html>


我真的很想知道为什么它在本地主机上工作得非常好,但是当我部署时,我收到来自 socketio 的 400 错误 POST 请求?

标签: javascriptpythonflaskwebflask-socketio

解决方案


推荐阅读