为什么SocketIO和SSLify不能一起工作?

问题描述 投票:3回答:1

我建立了一个非常简单的flask应用,使用socketIO来制作一个简单的chatapp,在那里你可以写消息。在我的js文件中,我建立了一个函数,每隔几秒钟就会使用geolocation发送用户的当前位置。

因为我使用的是地理位置,所以我需要使用https而不是flask创建的http。

我发现了SSLify,并尝试了一下,但因为我也在使用socketIo,所以它在http上运行,而不是在https上。在没有socketIo的应用程序中,它可以工作,问题是什么?

这是我的flask应用。

from flask import Flask, render_template
from flask_socketio import SocketIO
from flask_sslify import SSLify

app = Flask(__name__)
app.config['SECRET_KEY'] = 'jsbcfsbfjefebw237u3gdbdc'

socketio = SocketIO(app)
sslify = SSLify(app)


@app.route('/')
def index():
    return render_template('./ChatApp.html')


def messageRecived():
    print('message was received!!!')


@socketio.on('my event')
def handle_my_custom_event(json):
    print('recived my event: ' + str(json))
    socketio.emit('my response', json, callback=messageRecived)


if __name__ == '__main__':
    socketio.run(app, debug=True, host='0.0.0.0')
python flask https flask-socketio
1个回答
0
投票

它不工作的原因是Flask-SSLify被应用到你的Flask应用中(你的应用程序的 app 实例),而不是Socket.IO(Socket.IO的 socketio 实例)。)

据我所知,对于Socket.IO服务器来说,没有与Flask-SSLify相当的东西,所以你需要自己构建一个WSGI中间件,或者在Python服务器上方的反向代理中实现HTTP到HTTPS的重定向,比如nginx或Apache。

© www.soinside.com 2019 - 2024. All rights reserved.