我试图创建一个应用程序,通过python flask-socketio包使用SocketIO。我已经建立了我的服务器,例如:Flask开发服务器服务损坏的socket.io.js文件
文件./run.py
from my_project import app, socketio
if __name__ == '__main__':
socketio.run(app, host='0.0.0.0', debug=True)
文件./my_project/__init__.py
from flask import Flask
from flask_socketio import SocketIO
app = Flask(__name__)
app.config['SECRET_KEY'] = 'MY SECRET KEY'
socketio = SocketIO(app)
@socketio.on('connect')
def print_connect():
print('Client connected')
@socketio.on('disconnect')
def print_disconnect():
print('Client disconnected')
from my_project import views
我得到“没有定义”的错误时,试图用它在客户端上,所以我打开了Chrome从服务器上检索到的socket.io.js
文件,但仅有以下内容(全部)感到惊讶:
�0{"pingTimeout":60000,"sid":"3d6073ff436c49b1aa06090dbb001ceb","upgrades":[],"pingInterval":25000}�40
为了仔细检查它与我的应用程序无关,我使用命令curl 127.0.0.1:5000/socket.io/socket.io.js
通过卷曲检索了该文件,该命令返回了完全相同的乱码字符串。
我没有以任何方式使用Express(据我所知),所以大部分关于采购客户端socket.io文件的其他问题似乎都不适用。此外,我没有从服务器获得404,我得到了某种类型的200和数据。
我能做些什么来解决为什么我的服务器服务了一个明显损坏的socket.io文件?
我看到问题现在在哪里。我一直在关注官方SocketIO [开始](https://socket.io/get-started/chat/)文档,它说在客户端使用这个魔术路径字符串(在[这个SO问题](https://stackoverflow.com/questions/26480991/how-nodejs-and-socket-io-serve-socket-io-js?rq=1))。直到现在,我甚至都没有想到,神奇的路径可能只存在于官方的服务器端node.js包,而不是你的python绑定。我担心我的安装有些东西坏了。尽管如此,我还是觉得很奇怪,我并没有得到404。 –
是的,Python服务器实际上不是绑定,它是一个与Node.js官方实现不共享代码的完整服务器。我想我可以改进URL的解析并返回404,但现在任何以'/ socket.io /'开头的东西都被假定为服务的轮询/ websocket端点。 – Miguel