Upload
tencent
View
2.359
Download
7
Embed Size (px)
DESCRIPTION
Flask With Server-Sent Event by cppgohan sztechparty 20130317
Citation preview
@cppgohan
with
Server-Sent Events
Flask?
Flask?MicroFramework again...
Flask?MicroFramework again...Written in Python
=
=
Werkzeug
WSGI utility library
=
+Werkzeug
WSGI utility library
=
+Werkzeug
WSGI utility library
=
+Werkzeug
WSGI utility library
Jinja2
template engine
=
Hello.py
Demo
Hello.py
Demo
Hello.py
Demo
index.html
Demo
index.html
Demo
result???
index.html
Demo
result???
• terminal run: python hello.py
• open http://localhost:5000
Server-Sent Event
server push的html5标准, 用法简易, 单次连接比polling高效些.
相比websocket的双向二进制数据, Server-Sent Event只是单向, HTTP协议. (但浏览器调试工具往往没法看到服务器发来的数据, X_X)
Server对Client的请求, 做stream方式的响应.
Server-Sent Event
Server-Sent Event
支持率不高, 暂时只能”玩”
要兼容处理
Demo
index.html
Demohello.py
Demoredis:
Demoredis:
demo:FILE_TEXT -- 每次python读出来的文本
demo:FILE_TEXT_SEQ -- 为文本版本号, 每次文本更新, 版本号+1
/sever_push响应 -- 当FILE_TEXT_SEQ增加时, 将最新的文本返回给浏览器
Demo
result???
Demo
result???
• terminal run: python hello.py
Demo
result???
• terminal run: python hello.py
• open http://localhost:5000
Demo
result???
• terminal run: python hello.py
• open http://localhost:5000
• block!!!
Demo
result???
• terminal run: python hello.py
• open http://localhost:5000
• block!!!
solution???
Demo
result???
• terminal run: python hello.py
• open http://localhost:5000
• block!!!
• async WSGI server! (eg. gunicorn + gevent, gevent)
solution???
Demo
result???
• terminal run: python hello.py
• open http://localhost:5000
• block!!!
• async WSGI server! (eg. gunicorn + gevent, gevent)
• terminal run: gunicorn -k gevent -b '0.0.0.0:5000' hello:app
solution???
Demo
result???
• terminal run: python hello.py
• open http://localhost:5000
• block!!!
• async WSGI server! (eg. gunicorn + gevent, gevent)
• terminal run: gunicorn -k gevent -b '0.0.0.0:5000' hello:app
• open http://localhost:5000
solution???
Demo
result???
• terminal run: python hello.py
• open http://localhost:5000
• block!!!
• async WSGI server! (eg. gunicorn + gevent, gevent)
• terminal run: gunicorn -k gevent -b '0.0.0.0:5000' hello:app
• open http://localhost:5000
• open http://localhost:5000 again!
solution???
More Demo
Server下发代码示例
More Demo
• start web server
• open http://localhost:5000
• server push js script...
• browser excute js script...
• ...
Server下发代码示例
More Usage
•网站动态更新
•区分客户端推送
•微博墙实现
•webgame服务器推送
•浏览器插件
Resources
• http://www.python.org/dev/peps/pep-0333/
• http://werkzeug.pocoo.org/
• http://jinja.pocoo.org/
• http://flask.pocoo.org/
• http://www.gevent.org/
• http://gunicorn.org/
• http://dev.w3.org/html5/eventsource/
• http://www.html5rocks.com/en/tutorials/eventsource/basics/
• http://www.w3schools.com/html/html5_serversentevents.asp
END; 2013, 分享不止!