Flask-socketio似乎已连接,但不起作用

时间:2019-04-27 04:40:05

标签: python reactjs flask socket.io flask-socketio

当我将flask-socketioreact一起使用时,似乎已经建立连接,但是烧瓶中的事件不起作用。

似乎从终端连接了。

* Debugger is active!
 * Debugger PIN: 246-185-917
(14802) wsgi starting up on http://127.0.0.1:5000
(14802) accepted ('127.0.0.1', 47658)
127.0.0.1 - - [26/Apr/2019 22:59:23] "GET /socket.io/?EIO=3&transport=polling&t=MfSyfS3 HTTP/1.1" 200 401 0.001679
(14802) accepted ('127.0.0.1', 47662)
(14802) accepted ('127.0.0.1', 47666)
127.0.0.1 - - [26/Apr/2019 22:59:23] "POST /socket.io/?EIO=3&transport=polling&t=MfSyfSe&sid=27c47fbfe66645a1a851212b31be8816 HTTP/1.1" 200 219 0.000912
127.0.0.1 - - [26/Apr/2019 22:59:23] "GET /socket.io/?EIO=3&transport=polling&t=MfSyfSf&sid=27c47fbfe66645a1a851212b31be8816 HTTP/1.1" 200 235 0.002975

在浏览器上,当我打印socketio对象时似乎也已连接。

Socket {io: Manager, nsp: "/", json: Socket, ids: 0, acks: {…}, …}
acks: {}
connected: true
disconnected: false
flags: {}
id: "4ce17c17bbab45d2bab00f5dda61ea58"
ids: 0
io: Manager {nsps: {…}, subs: Array(6), opts: {…}, _reconnection: true, _reconnectionAttempts: Infinity, …}
json: Socket {io: Manager, nsp: "/", json: Socket, ids: 0, acks: {…}, …}
nsp: "/"
receiveBuffer: []
sendBuffer: []
subs: (3) [{…}, {…}, {…}]
_callbacks: {$connecting: Array(1), $connect: Array(2), $reply: Array(1), $my response: Array(1)}
__proto__: Object

这是测试代码,没有打印预期的响应。

this.socket.on("connect", () => {
            console.log("..."); // can print
            console.log(this.socket); // can print
            this.socket.emit("reply", {msg: "hihi"}); // no output on terminal
        })

this.socket.on("reply", (data) => {
            console.log(data); // no output even "undefined"
        });

testClick() {
        console.log("click"); // output on console
        const ret = this.socket.emit("reply", {data: "hihi"}) // no output on flask terminal
        console.log(ret); // output on console
    }
@socketio.on("connect", namespace="/")
def connect():
    socketio.emit("reply", {"data": "what"})
    print("connect") // no such output

@socketio.on("reply", namespace="/")
def reply(data):
    print(data) // no such output

这是我创建套接字连接的方式。

this.socket = io("http://localhost:5000");
# __init__.py
from flask import Flask
from flask_cors import CORS
from flask_socketio import SocketIO

socketio = SocketIO()

def create_app(debug=True):
    """Create an application."""
    app = Flask(__name__)
    app.debug = debug
    app.config['SECRET_KEY'] = 'gjr39dkjn344_!67#'
    CORS(app)

    from .routes import authen
    from .api import api

    app.register_blueprint(authen.auth_bp)
    app.register_blueprint(api.api_bp)

    socketio.init_app(app)
    return app


# main.py
from app import create_app, socketio

app = create_app(debug=True)

if __name__ == '__main__':
    socketio.run(app)

0 个答案:

没有答案
相关问题