插座.IO https/ssl在iOS和Python应用引擎



我使用Flask在Python 3.7中构建了一个GCP应用引擎服务,并在Swift中构建了一个iOS应用程序。应用程序正在使用Socket。IO连接和传输数据。

本地部署一切都很好,但是当部署到GCP时,SocketIO连接永远不会升级到套接字,并且默认为长轮询。

这似乎是ssl/https的问题,尽管几个小时的谷歌没有给我带来任何快乐。只是没有足够的文档说明我应该添加什么来让https在套接字上工作。

这段代码在我看来是相当不起眼的,但无论如何

App Engine

app = Flask(__name__)
app.config["SECRET_KEY"] = socket_secret
socketio = SocketIO(app, cors_allowed_origins="*")
@socketio.event()
def connect():
print("******* connection established *******")

@socketio.on("update")
def update(json):
handle_update(json)

if __name__ == '__main__':
print("Starting")
socketio.run(app, debug=True)

iOS

private lazy var socketManager: SocketManager = {
let config: SocketIOClientConfiguration = [.log(true),
.compress,
//.connectParams(["ssl_verify": false]),
//.forceWebsockets(true)
]
let manager = SocketManager(socketURL: URL(string: domain)!, config: config)
return manager
}()

我假设我需要知道两件事…

  1. 如何在我的应用程序引擎上创建SSL证书并将其给予我的PythonSocket.io实例
  2. iOS上的SocketManager如何以相同的方式使用证书在NSURLConnection上的证书固定工作

如果这是标准env,它可能是由于标准env不支持websockets的事实。参考文档,Google组讨论

查看功能请求

最新更新