服务端代码:
from flask import Flask, make_response, render_template
import time, redis
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html')
@app.route('/sse')
def index():
r = redis.Redis(host='127.0.0.1')
p = r.pubsub()
r.publish('mud','我来啦!')
p.subscribe('mud')
for i in p.listen():
if i['type'] == 'message':
sse = make_response('data:%s \n\n'% i['data'].decode())
sse.headers['Content-Type']='text/event-stream'
return sse
if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0',port=80)
页面代码:
<!DOCTYPE html>
<html>
<body>
<h1>获得服务器推送</h1>
<div id="result"></div>
<script>
if(typeof(EventSource)!=="undefined")
{
var source=new EventSource("/sse");
source.onmessage=function(event)
{
document.getElementById("result").innerHTML+=event.data + "<br />";
};
}
else
{
document.getElementById("result").innerHTML="Sorry, your browser does not support server-sent events...";
}
</script>
</body>
</html>