最近看flask有关的文档。想security, sqlalchemy, jwt等等相关的插件都没有问题。惟独这个socketio, 跟着官方文档一块儿蒙, 若是不看github上面的范例还真很差懂。javascript
https://flask-socketio.readthedocs.io/en/latesthtml
从文档的initialization到recieving message等,你在本地就是不能测。java
因此只能配合他人的博客来理解了。python
from flask import Flask, render_template from flask_socketio import SocketIO app = Flask(__name__) app.config['SECRET_KEY'] = 'secret!' socketio = SocketIO(app) if __name__ == '__main__': socketio.run(app)
在这个基础上咱们添加一个Index.htmlgit
@app.route('/') def index(): return render_template('index.html')
而后创建相应的templates/index.html
并填入github
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/socket.io/1.3.6/socket.io.min.js"></script> <script type="text/javascript" charset="utf-8"> var socket = io.connect('http://' + document.domain + ':' + location.port); socket.on('connect', function() { socket.emit('my event', {data: 'I\'m connected!'}); }); </script>
这个script建立了一个socket对象,连接到本地。而且建立了一个叫‘connect'的event。
注意,sockeio里面的'connect', 'disconnect', 'message' 以及 'json'是保留的event, 其余的就属于自定义的
还有一个重要的参数就是namespace, 可是咱们在创建连接的时候,最后没有添加namespace,因此就是默认的全局namespaceajax
既然客户端创建了一个叫connect的event, 将会在创建连接的时候调用,而后emit了一个叫'my event'的event, 那么这个自定义的event将会触发,因此咱们在服务端写:sql
@socketio.on('my event') def my_event(message): print(message['data'])
这里咱们将’my event'收到的message的data字段打印出来,由于上面咱们收到的是{data: 'I'm connected!'}这个json格式的数据。json
而后启动程序,打开页面,你就能够在终端看到 I'm connected! 这个输出了。flask