하나의 서버에서 여러 WSGI 응용 프로그램을 실행하고 해당 응용 프로그램 중 하나에서 통신하기 위해 Flask-SocketIO socketio-server를 사용하려는 설치가 있습니다.Flask socketio with werkzeug DispatcherMiddleware 및 다중 WSGI 응용 프로그램 : 연결되지 않음
나는 다음과 같은 명령을 사용하여 플라스크-SocketIO 설명서에서 제안으로 내 WSGI-애플 리케이션, eventlet와 gunicorn을 통해 봉사있어 :
이 gunicorn --worker-class eventlet -w 1 myapp:application
이 애플 리케이션에게 모든 권리를 제공의 설정을위한 내부 코드는이 (__init__.py
)과 같다 : 이것은 정상적으로 작동하지만, 내 응용 프로그램은 이제 더 이상 어떤 웹 소켓 연결이 없습니다
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를 처리해야하나요? 그럴 경우 어떻게 연결 문자열을 찾아야합니까? 는 지금 내 연결 문자열은 다음과 같습니다 'http://' + document.domain + ':' + location.port + '/'
를 자바 스크립트 측에서
PS : 나는이 일을 해요 이유는 내가 때문에, 응용 프로그램의 나머지 부분과 동일한 도메인에서 Pyro4 게이트웨이를 제공 할 필요가 있다는 것입니다 그렇지 않으면 브라우저는 pyro4에 대한 내 REST 호출에 동일한 origin-policy 제한 사항을 적용합니다. 그래서 이것이 너무 복잡하고, 나의 최종 목표에 도달하는 쉬운 방법이 존재한다면, 나는 또한 그것에 열려 있습니다.
답장을 보내 주셔서 감사합니다. 안타깝게도 귀하의 제안이 작동하지 않았으며, 다른 방식으로 "수정"했습니다. –