私は、1つのサーバーで複数のWSGIアプリケーションを実行し、それらのアプリケーションの1つで通信するためにFlask-SocketIO socketio-serverを使用する設定があります。Flask socketio with werkzeug DispatcherMiddlewareと複数のWSGIアプリケーション:no connection
次のコマンドを使用して、フラスコ-SocketIOマニュアルによって提案されたように私は私のWSGI-アプリは、eventletでgunicornを経由して提供ガット:
gunicorn --worker-class eventlet -w 1 myapp:application
これは、アプリケーションはすべての右を提供しています、セットアップのための内部コードは、この(__init__.py
)のようになります。これは、それが必要として動作しますが、私のアプリケーションは、今はもう何のWebSocket接続されていない
from flask import Flask
from werkzeug.wsgi import DispatcherMiddleware
from Pyro4.utils.httpgateway import pyro_app as gateway
from myapp.extensions import socketio
from myapp.views.vue_js import vue
from config import PYRO_REGEX
def configure_blueprints(app):
app.register_blueprint(vue)
def register_extensions(app):
socketio.init_app(app)
app = Flask(__name__, instance_relative_config=True, template_folder='static', static_url_path='')
app.config.from_object('config')
configure_blueprints(app)
register_extensions(app)
# Set up WSGI application middleware to serve both the pyro httpgateway and this application
# through the same server
application = DispatcherMiddleware(gateway, {
'/app': app
})
。どのようにしてFlask-SocketIOをこの設定で動作させることができますか?
問題は、/ socketioに接続しようとするとsocketioサーバーへのjavascript接続で404エラーが発生することです。
私のアプリのサブドメインをJavascript側に渡す必要がありますか? その場合、接続文字列はどのように見えますか? が今の私の接続文字列は次のようになります。Javascriptの側で'http://' + document.domain + ':' + location.port + '/'
PS: 私はこれをやっている理由は、私は以来、アプリケーションの残りの部分と同じドメインからPyro4ゲートウェイを提供する必要があるということですそれ以外の場合、ブラウザはpyro4へのREST呼び出しに同じ起点ポリシーの制限を適用します。もしこれがあまりにも複雑で、私の最終目標に到達するためのより簡単な方法があれば、私はそれにも開放しています。
あなたの答えをありがとう、悲しいことにあなたの提案はうまくいかず、私は別の方法でそれを「固定」しました。 –