带Apache代理的Flask SocketIO错误请求

时间:2019-10-29 10:28:38

标签: apache flask-socketio

尝试升级到WebSocket协议时,我收到HTTP 400:错误请求。

在客户端上,我通过以下方式初始化套接字(传输仅用于测试,因此不会浪费轮询时间-顺便说一下)

export const socket = io('/my-namespace', { transports: ['websocket'] });

在服务器上:

app = Flask(__name__)
socketio = SocketIO()
socketio.init_app(app)
socketio.on_namespace(MyClass('/my-namespace'))

class MyClass(Namespace):
    def __init__(self, namespace):
        Namespace.__init__(self, namespace)
    ...

Apache配置:

RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/socket.io/            [NC]
RewriteCond %{QUERY_STRING} transport=websocket    [NC]
RewriteRule ^/socket.io/(.*)           ws://localhost:3000/socket.io/$1 [P,L]

ProxyPass        /socket.io/ http://localhost:3000/socket.io/
ProxyPassReverse /socket.io/ http://localhost:3000/socket.io/

在python调试时,我收到如下消息:

135.247.26.208,127.0.0.1 - - [29/Oct/2019 11:26:41] "GET /socket.io/?EIO=3&transport=websocket HTTP/1.1" 400 122 0.000338

因此,很明显,代理正在按预期工作。当我直接连接到flask应用程序时,websockets可以正常工作。知道这可能是什么原因吗?

0 个答案:

没有答案