我正在开发一个实时聊天和照片共享应用程序。我使用 Flask 作为我的服务器端来构建 RESTful Web 服务,并使用 Ionic 框架 (AngularJS) 在移动设备上构建我的客户端。
我有一个 Web 服务端点 [GET] /feeds/user_id 返回用户的新提要。当我使用以下代码行初始化我的应用程序时,我可以正确地从 localhost 和我在移动设备上运行的应用程序检索数据。
app.run(host='0.0.0.0', debug=True)
当我使用实时聊天构建应用程序时,我使用 Flask-SocketIO 并将我的应用程序的初始化方式更改为以下方式,如官方文档中所述。
socketio.run(app, host='0.0.0.0', policy_server=False)
但是,我现在无法通过上述初始化方式从我的移动应用程序中检索数据。示例日志之一是:
192.168.1.100 - - [2015-09-13 23:38:32] "GET http://192.168.1.101:5000/feeds/1 HTTP/1.1" 404 342 0.002000
但是,我可以使用相同的链接从我的本地主机和同一网络中的另一台机器检索数据,因此我确信服务器正在侦听所有公共 IP。我也禁用了我的防火墙。
我的代码片段如下:
from app import socketio, app
if __name__ == '__main__':
socketio.run(app, host='0.0.0.0', policy_server=False)
# app.run(host='0.0.0.0', debug=True)
任何帮助表示赞赏!
更新:当我只使用 app.run() 时,日志如下:
192.168.1.110 - - [20/Sep/2015 00:17:23] "GET http://192.168.1.103:5000/feeds/1 HTTP/1.1" 200 -
正如 Miguel 所提到的,这是一个奇怪的日志,但它可以工作,所以感谢 Flask 的健壮性!
我还尝试在 iOS 上运行我的应用程序,效果很好。现在我怀疑这是 Android 平台上的 Ionic 框架的问题,或者只是在我的设备上。我的设备是 Nexus 7 Gen 1,运行 Android 5.1.1。