python - flask_socketio使用uswgi启动访问socketio会400错误
PHP中文网
PHP中文网 2017-04-18 09:55:46
0
1
893

python依赖:

  1. flask

  2. flask_socketio

  3. uwsgi

  4. gevent

/web/__init__.py

from flask import Flask
from flask_socketio import SocketIO, emit
app = Flask(__name__)
socket_io = SocketIO(app)

@socket_io.on('test')
def handle_my_custom_event(json):
    print(json)
    emit('my response', json)

/web/static/index.html

<script type="text/javascript" src="./socket.io.min.js"></script>
<script type="text/javascript" charset="utf-8">
    var socket = io.connect('http://' + document.domain + ':' + location.port);
    socket.on('connect', function() {
        socket.emit('test', {data: 'I\'m connected!'});
    });
</script>

/run.sh

#!/bin/sh
uwsgi --http :8000 --gevent 1000 --http-websockets --master --module web --callable app

然后访问http://127.0.0.1:8000/static/index.html。抓包400错误无法访问socket.io

上的使用方法来自flask_socketio文档。其中下面的使用nginx代理的方式也用过了。没有用一样是400。

上面的uwsgi只能在linux上用。。我全部都是在docker中做的测试。

PHP中文网
PHP中文网

认证0级讲师

全員に返信(1)
黄舟

uwsgi は理解できません。
私は Gunicorn を使用していますが、同じ問題が発生しました。
ドキュメントを確認したところ、カスタム gevent Web サーバーを使用することで問題が解決されました。

gevent ワーカーおよび gevent-websocket によって提供される WebSocket サポートで gunicorn を使用する場合、サーバーを起動するコマンドを変更して、WebSocket プロトコルをサポートするカスタム gevent Web サーバーを選択する必要があります。コマンドは:
gunicorn -k geventwebsocket.gunicorn.workers.GeventWebSocketWorker -w 1 module:app

pip install gevent-websocket

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!