SlideShare ist ein Scribd-Unternehmen logo
1 von 11
Html5 <html5> <figure>Server-Sent Event</figure> <a href='mailto:leonguo@sohu-inc.com'>leonguo</a> <time>2010.10</time> </html5>
Agenda 一个广泛的适用场景 现阶段采用的一些解决方案及不足(AJAX、Comet) 规范(html5 Server-Sent Event) 实例 更多细节 Q&A
In many cases 只需要服务端实时的向浏览器推送就可以了 Example: 在线人数实时统计 球赛实况 股票实时动态 新闻公告板
The current scheme Polling Ajax 浪费了大量连接、流量与时延 Comet(Ajax/Iframe) 缺乏统一的标准 实现复杂
Server-Sent Events Server-Sent Events(SSE) 实际上是将 Comet 技术进行了标准化 规范和标准化了一个连续的数据流如何被从服务端发送到浏览器 SSE 包含新的HTML元素 EventSource 和新的 MIME 类型 text/event-stream,这个MIME类型定义了事件框架格式。
API  client.js document.addEventListener('DOMContentLoaded', function() {   var eventSrc  = new EventSource('events.php');   eventSrc.addEventListener('open', function (event) {       console.log(event.type);   });   eventSrc.addEventListener('message', function (event) { console.log(event.type);       console.log(event.data);   }); }, false); events.php <?php header("Content-Type: text/event-stream"); echo 'data: ' . time() . "";
A Original Demo
More 使用共享的 WebWorker,共享 EventSource 实例 尽量在没有其它数据发送时定期发送 keep-alive 注释,以防被当作空闲连接被代理服务器关闭, 尽管sever-sent events 会自动重建连接 在 Response header 中标记 Cache-Control:no-cache 避免被缓存 可以结合使用 Request 中的 Last-Event-Id 防止重复接受已经接收到的事件
Browser Support for SSE 和 WebSocket 相比比较沉默 http://www.findmebyip.com/litmus#target-selector 目前已经支持的包括 WebKit(safari/chrome) Opera Firefox Beta
Q&A
THANKS

Weitere ähnliche Inhalte

Ähnlich wie Hello serversentevent(cn)

揭秘Html5和Css3 ---- 鲁超伍
揭秘Html5和Css3 ---- 鲁超伍揭秘Html5和Css3 ---- 鲁超伍
揭秘Html5和Css3 ---- 鲁超伍裕波 周
 
Html5css3 go.yeefe.com
Html5css3 go.yeefe.comHtml5css3 go.yeefe.com
Html5css3 go.yeefe.comtellyeefe
 
WEB 安全基础
WEB 安全基础WEB 安全基础
WEB 安全基础xki
 
高性能网站最佳实践
高性能网站最佳实践高性能网站最佳实践
高性能网站最佳实践longhao
 
让我们的页面跑得更快
让我们的页面跑得更快让我们的页面跑得更快
让我们的页面跑得更快li qiang
 
TBAD F2E 2010 review
TBAD F2E 2010 reviewTBAD F2E 2010 review
TBAD F2E 2010 reviewleneli
 
Exam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development FundamentalsExam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development FundamentalsChieh Lin
 
G2 g画图分享
G2 g画图分享G2 g画图分享
G2 g画图分享fangdeng
 
Ajax Transportation Methods
Ajax Transportation MethodsAjax Transportation Methods
Ajax Transportation Methodsyiditushe
 
淘宝新首页开发实践
淘宝新首页开发实践淘宝新首页开发实践
淘宝新首页开发实践chencheng 云谦
 
运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践Li JianYe
 
Real time web实时信息流推送
Real time web实时信息流推送Real time web实时信息流推送
Real time web实时信息流推送yongboy
 
Real-Time Web实时信息流推送
Real-Time Web实时信息流推送Real-Time Web实时信息流推送
Real-Time Web实时信息流推送yongboy
 
Node Web开发实战
Node Web开发实战Node Web开发实战
Node Web开发实战fengmk2
 
Timers in Browser
Timers in BrowserTimers in Browser
Timers in Browserj5726
 
[2008]网站重构 -who am i
[2008]网站重构 -who am i[2008]网站重构 -who am i
[2008]网站重构 -who am iTwinsen Liang
 
Re Introduce Web Development
Re Introduce Web DevelopmentRe Introduce Web Development
Re Introduce Web Developmentfinian lau
 
HTML & JavaScript
HTML & JavaScriptHTML & JavaScript
HTML & JavaScriptSanji Zhang
 

Ähnlich wie Hello serversentevent(cn) (20)

揭秘Html5和Css3 ---- 鲁超伍
揭秘Html5和Css3 ---- 鲁超伍揭秘Html5和Css3 ---- 鲁超伍
揭秘Html5和Css3 ---- 鲁超伍
 
Html5css3 go.yeefe.com
Html5css3 go.yeefe.comHtml5css3 go.yeefe.com
Html5css3 go.yeefe.com
 
WEB 安全基础
WEB 安全基础WEB 安全基础
WEB 安全基础
 
高性能网站最佳实践
高性能网站最佳实践高性能网站最佳实践
高性能网站最佳实践
 
让我们的页面跑得更快
让我们的页面跑得更快让我们的页面跑得更快
让我们的页面跑得更快
 
TBAD F2E 2010 review
TBAD F2E 2010 reviewTBAD F2E 2010 review
TBAD F2E 2010 review
 
Exam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development FundamentalsExam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development Fundamentals
 
G2 g画图分享
G2 g画图分享G2 g画图分享
G2 g画图分享
 
Ajax Transportation Methods
Ajax Transportation MethodsAjax Transportation Methods
Ajax Transportation Methods
 
淘宝新首页开发实践
淘宝新首页开发实践淘宝新首页开发实践
淘宝新首页开发实践
 
Jsp讲义
Jsp讲义Jsp讲义
Jsp讲义
 
运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践
 
四天学会Ajax
四天学会Ajax四天学会Ajax
四天学会Ajax
 
Real time web实时信息流推送
Real time web实时信息流推送Real time web实时信息流推送
Real time web实时信息流推送
 
Real-Time Web实时信息流推送
Real-Time Web实时信息流推送Real-Time Web实时信息流推送
Real-Time Web实时信息流推送
 
Node Web开发实战
Node Web开发实战Node Web开发实战
Node Web开发实战
 
Timers in Browser
Timers in BrowserTimers in Browser
Timers in Browser
 
[2008]网站重构 -who am i
[2008]网站重构 -who am i[2008]网站重构 -who am i
[2008]网站重构 -who am i
 
Re Introduce Web Development
Re Introduce Web DevelopmentRe Introduce Web Development
Re Introduce Web Development
 
HTML & JavaScript
HTML & JavaScriptHTML & JavaScript
HTML & JavaScript
 

Hello serversentevent(cn)

  • 1. Html5 <html5> <figure>Server-Sent Event</figure> <a href='mailto:leonguo@sohu-inc.com'>leonguo</a> <time>2010.10</time> </html5>
  • 3. In many cases 只需要服务端实时的向浏览器推送就可以了 Example: 在线人数实时统计 球赛实况 股票实时动态 新闻公告板
  • 4. The current scheme Polling Ajax 浪费了大量连接、流量与时延 Comet(Ajax/Iframe) 缺乏统一的标准 实现复杂
  • 5. Server-Sent Events Server-Sent Events(SSE) 实际上是将 Comet 技术进行了标准化 规范和标准化了一个连续的数据流如何被从服务端发送到浏览器 SSE 包含新的HTML元素 EventSource 和新的 MIME 类型 text/event-stream,这个MIME类型定义了事件框架格式。
  • 6. API client.js document.addEventListener('DOMContentLoaded', function() { var eventSrc = new EventSource('events.php'); eventSrc.addEventListener('open', function (event) { console.log(event.type); }); eventSrc.addEventListener('message', function (event) { console.log(event.type); console.log(event.data); }); }, false); events.php <?php header("Content-Type: text/event-stream"); echo 'data: ' . time() . "";
  • 8. More 使用共享的 WebWorker,共享 EventSource 实例 尽量在没有其它数据发送时定期发送 keep-alive 注释,以防被当作空闲连接被代理服务器关闭, 尽管sever-sent events 会自动重建连接 在 Response header 中标记 Cache-Control:no-cache 避免被缓存 可以结合使用 Request 中的 Last-Event-Id 防止重复接受已经接收到的事件
  • 9. Browser Support for SSE 和 WebSocket 相比比较沉默 http://www.findmebyip.com/litmus#target-selector 目前已经支持的包括 WebKit(safari/chrome) Opera Firefox Beta
  • 10. Q&A