Websocket 传输不可用烧瓶scoketIO

问题描述

我正在尝试在我的网页中实现flask-socketIO,所以我首先制作了一个测试脚本以更好地了解它是如何工作的。

每当我将脚本运行到终端时,我都会收到此错误

WARNING in __init__: WebSocket transport not available. Install gevent-websocket for improved performance.

然后我继续在终端中输入“conda install gevent-websocket”。 在我重新运行代码之前,一切似乎都很顺利。现在当我运行代码时什么也没有出现,就好像正在加载一样。

解决方法

主要内容:

if __name__ == "__main__":
    import eventlet
    eventlet.monkey_patch()
    import eventlet.wsgi
    eventlet.wsgi.server(eventlet.listen(('',80)),app,log=devnull)

flask-socketio

    socketio = SocketIO(app,logger=True,engineio_logger=True,policy_server=False,async_mode='eventlet',manage_session=False,cors_allowed_origins="*")
    import eventlet
    eventlet.monkey_patch()

要求:

    flask_socketio==5.0.1
    python-engineio==4.0.0
    python-socketio==5.0.4

正确的浏览器api:

    <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/3.0.4/socket.io.js" crossorigin="anonymous"></script>

Javascript:

    const socket = io({
        path: '/'+window.location.pathname.split("/")[1]+'/socket.io/',transports: [ 'websocket' ] // or [ 'websocket','polling' ]
    });
    socket.on('test',function(data) {
        console.log(data);
    });