SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
node.JS 於互動式網站之應用
               ericpi
關於 KKBOX

• No.1 Music service in Taiwan
• 跟 open source 有什麼關係 ?
  – 喜愛 OSS
  – 使用大量 OSS
  – 參與 OSS 社群活動
網站發展趨勢

• Web 1.0 " 2.0 " ?
   – Content Retrieval(pull)
   – Interactive(pull+push)
   –?
• SNS, 短網誌當道
互動即時是王道!
很久很久以前

   • 互動性差
   • 即時性差
沒多久前

• 互動性稍好
• 即時性差
現在
既然網站的互動需求越來越高
所以未來的網站技術應該 ...
未來 – HTML5 websockets(?)

            • 互動性好
            • 即時性好
            • 這就是未來 ?
              browser 普及率 ?
IE6 must die

IE[6-8] must die
高互動性網站的難題

• 需極快的反應時間
• 大量且密集的連線
• 開發及維護難易度問題
看樣子只好來寫 C 了 ...
但我們的工程師不是宅色夫 ...
node.JS !
node.JS 是啥 ?

• Event APIs for V8 Javascript engine
   – http://nodeJS.org/
   – http://github.com/ry/node/
node.JS 有什麼好的 ?

• 高效率低成本
• Javascript

•   Event base APIs
•   Non-Blocking I/O
•   HTTP, TCP 等協定支援
•   CommonJS
•   WAF add-on
Benchmark – response time
Benchmark – memory usage
node.JS 的應用

• 作為大量 / 即時觸發事件的 back-end
  – e.g. chatroom, plurk
• 可快速開發 network server daemon
  – e.g. Memcached proxy
node.JS 怎麼用 ?


var http = require('http');

http.createServer(function (req, resp) {
  resp.writeHead(200, { 'Content-Type' : 'text/plain' });
  resp.end('Hello Worldn');
}).listen(8000);
TCP 也可以 !

var sys = require('sys'),
    net = require('net');

var tcp_server = net.createServer(function (stream) {
 stream.setEncoding('ascii');
 stream.write("hello worldnn");
 stream.end();

  stream.addListener('end', function () {
    sys.log('connection end!');
  });
});

tcp_server.listen(2323);
Non-blocking & blocking I/O

fs.readFile('./a.htm', 'ut8',                       var body = fs.readFileSync('./a.htm', 'ut8');
 functon (err, body) {                              resp.writeHead(200, {
 resp.writeHead(200, {                                    'Content-Type' : 'text/html;charset=ut-8',
       'Content-Type' : 'text/html;charset=ut-8',         'Content-Length' : body.length
       'Content-Length' : body.length               });
 });                                                resp.write(body);
 resp.write(body);                                  resp.end();
 resp.end();
});
node.JS 有什麼 (1)

• Events
   – EventEmitter / Listener
• Buffers
   – Binary / ASCII / UTF-8 encoding
• Stream
   – Network / FS...
• File System
   – Sync / aSync APIs
node.JS 有什麼 (2)

• Network support
  – HTTP(s)/TCP/DNS
• URL/QueryString
  – URL / QueryString Parser
• Process
  – Fork / kill / getInfo...
• Crypto
  – OpenSSL
node.JS 不只這樣
因為愛
因為 Open Source
因為 Open Source

•   node-mysql-libmysqlclient
•   node-memcache
•   node-redis-client
•   express
•   node-websocket-server
•   node-websocket-client

    – http://wiki.github.com/ry/node/modules
Thanks!

• email
   – ericpi@kkbox.com.tw
• IRC
   – freenode/#osxchat
   – freenode/#gentoo-tw
   – debian/#dot
Thanks!

• 對以下技術有興趣 , 歡迎找我們聊聊
  – HTML5 / CSS3
  – Debian / FreeBSD
  – PHP / ruby / python
  – iOS / Android
  – Qt / GTK+

Más contenido relacionado

La actualidad más candente

Couchdb Beijing Openparty
Couchdb Beijing OpenpartyCouchdb Beijing Openparty
Couchdb Beijing Openpartylitaocheng
 
编辑器设计U editor
编辑器设计U editor编辑器设计U editor
编辑器设计U editortaobao.com
 
编辑器设计Kissy editor
编辑器设计Kissy editor编辑器设计Kissy editor
编辑器设计Kissy editortaobao.com
 
網路安全20140911@INFOR
網路安全20140911@INFOR網路安全20140911@INFOR
網路安全20140911@INFORAlexander Shieh
 
Style基础优化之独角兽篇
Style基础优化之独角兽篇Style基础优化之独角兽篇
Style基础优化之独角兽篇fangdeng
 
pyspider 介绍 - pycon2014@北京
pyspider 介绍 - pycon2014@北京pyspider 介绍 - pycon2014@北京
pyspider 介绍 - pycon2014@北京roybinux
 
KISSY Mechanism
KISSY MechanismKISSY Mechanism
KISSY Mechanismlifesinger
 
Tornado开发实践
Tornado开发实践Tornado开发实践
Tornado开发实践ZY Zhang
 
移动搜索在慢网速下的优化
移动搜索在慢网速下的优化移动搜索在慢网速下的优化
移动搜索在慢网速下的优化Charlee Green
 
鳳山高中/網頁應用程式開發入門 I
鳳山高中/網頁應用程式開發入門 I鳳山高中/網頁應用程式開發入門 I
鳳山高中/網頁應用程式開發入門 ILorex L. Yang
 
nodejs在微博前端开发中的应用
nodejs在微博前端开发中的应用nodejs在微博前端开发中的应用
nodejs在微博前端开发中的应用dong yuwei
 
Intro-to-SeaJS
Intro-to-SeaJSIntro-to-SeaJS
Intro-to-SeaJSlifesinger
 
Java_07:Thread
Java_07:ThreadJava_07:Thread
Java_07:ThreadBrad Chao
 
Kind editor设计思路
Kind editor设计思路Kind editor设计思路
Kind editor设计思路taobao.com
 
Chasingice
ChasingiceChasingice
Chasingice冰 白
 
Make your web faster
Make your web fasterMake your web faster
Make your web faster德生 谭
 
课题二:Node.js那些事儿
课题二:Node.js那些事儿课题二:Node.js那些事儿
课题二:Node.js那些事儿Liu Allen
 
Node develop expirements
Node develop expirementsNode develop expirements
Node develop expirementsaleafs
 
Fiddler for chrom extension
Fiddler for chrom extensionFiddler for chrom extension
Fiddler for chrom extensionWelefen Lee
 

La actualidad más candente (20)

Couchdb Beijing Openparty
Couchdb Beijing OpenpartyCouchdb Beijing Openparty
Couchdb Beijing Openparty
 
编辑器设计U editor
编辑器设计U editor编辑器设计U editor
编辑器设计U editor
 
编辑器设计Kissy editor
编辑器设计Kissy editor编辑器设计Kissy editor
编辑器设计Kissy editor
 
網路安全20140911@INFOR
網路安全20140911@INFOR網路安全20140911@INFOR
網路安全20140911@INFOR
 
Style基础优化之独角兽篇
Style基础优化之独角兽篇Style基础优化之独角兽篇
Style基础优化之独角兽篇
 
pyspider 介绍 - pycon2014@北京
pyspider 介绍 - pycon2014@北京pyspider 介绍 - pycon2014@北京
pyspider 介绍 - pycon2014@北京
 
KISSY Mechanism
KISSY MechanismKISSY Mechanism
KISSY Mechanism
 
Tornado开发实践
Tornado开发实践Tornado开发实践
Tornado开发实践
 
移动搜索在慢网速下的优化
移动搜索在慢网速下的优化移动搜索在慢网速下的优化
移动搜索在慢网速下的优化
 
鳳山高中/網頁應用程式開發入門 I
鳳山高中/網頁應用程式開發入門 I鳳山高中/網頁應用程式開發入門 I
鳳山高中/網頁應用程式開發入門 I
 
nodejs在微博前端开发中的应用
nodejs在微博前端开发中的应用nodejs在微博前端开发中的应用
nodejs在微博前端开发中的应用
 
Intro-to-SeaJS
Intro-to-SeaJSIntro-to-SeaJS
Intro-to-SeaJS
 
Java_07:Thread
Java_07:ThreadJava_07:Thread
Java_07:Thread
 
Kind editor设计思路
Kind editor设计思路Kind editor设计思路
Kind editor设计思路
 
Chasingice
ChasingiceChasingice
Chasingice
 
Make your web faster
Make your web fasterMake your web faster
Make your web faster
 
课题二:Node.js那些事儿
课题二:Node.js那些事儿课题二:Node.js那些事儿
课题二:Node.js那些事儿
 
Maven & mongo & sring
Maven & mongo & sringMaven & mongo & sring
Maven & mongo & sring
 
Node develop expirements
Node develop expirementsNode develop expirements
Node develop expirements
 
Fiddler for chrom extension
Fiddler for chrom extensionFiddler for chrom extension
Fiddler for chrom extension
 

Destacado

Ecosan–Pit Opening
Ecosan–Pit OpeningEcosan–Pit Opening
Ecosan–Pit OpeningArghyam
 
Top Ten Secrets of the Libraries of Mexico
Top Ten Secrets of the Libraries of MexicoTop Ten Secrets of the Libraries of Mexico
Top Ten Secrets of the Libraries of Mexicorogerider
 
Updated Power Point
Updated Power PointUpdated Power Point
Updated Power Pointameix3
 
數位創業最好的技術顧問 - 技術社群
數位創業最好的技術顧問 - 技術社群數位創業最好的技術顧問 - 技術社群
數位創業最好的技術顧問 - 技術社群ericpi Bi
 
Quality of Government Data
Quality of Government DataQuality of Government Data
Quality of Government DataArghyam
 
AWS vs Azure
AWS vs AzureAWS vs Azure
AWS vs Azureericpi Bi
 
KSDG LT: 6分鐘node.JS就上手
KSDG LT: 6分鐘node.JS就上手KSDG LT: 6分鐘node.JS就上手
KSDG LT: 6分鐘node.JS就上手ericpi Bi
 
The ulitmate history prject
The ulitmate history prjectThe ulitmate history prject
The ulitmate history prjectameix3
 
MOPCON 2014 - 堅持在濁水溪以南的夢想
MOPCON 2014 - 堅持在濁水溪以南的夢想MOPCON 2014 - 堅持在濁水溪以南的夢想
MOPCON 2014 - 堅持在濁水溪以南的夢想ericpi Bi
 
20151127 kh gov-data-training
20151127 kh gov-data-training20151127 kh gov-data-training
20151127 kh gov-data-trainingericpi Bi
 
KSDG meet-up #1
KSDG meet-up #1KSDG meet-up #1
KSDG meet-up #1ericpi Bi
 
Aprendizagem e Tecnologias
Aprendizagem e TecnologiasAprendizagem e Tecnologias
Aprendizagem e TecnologiasCristiane Mendes
 
讓你的 Web App 跟 Native 一樣使用經驗 - PhoneJS
讓你的 Web App 跟 Native 一樣使用經驗 - PhoneJS讓你的 Web App 跟 Native 一樣使用經驗 - PhoneJS
讓你的 Web App 跟 Native 一樣使用經驗 - PhoneJSericpi Bi
 
前端也能變全端
前端也能變全端前端也能變全端
前端也能變全端ericpi Bi
 
快快樂樂利用 PhoneGap 打造屬於自己的 App
快快樂樂利用 PhoneGap 打造屬於自己的 App快快樂樂利用 PhoneGap 打造屬於自己的 App
快快樂樂利用 PhoneGap 打造屬於自己的 Appericpi Bi
 
20160521 社群實務及組織協作
20160521 社群實務及組織協作20160521 社群實務及組織協作
20160521 社群實務及組織協作ericpi Bi
 
Recursos e ferramentas para produção de videoaulas
Recursos e ferramentas para produção de videoaulasRecursos e ferramentas para produção de videoaulas
Recursos e ferramentas para produção de videoaulasCristiane Mendes
 
KSDG web course #1 - git: 從零開始 - 如何利用版本控制提升網站開發團隊效益
KSDG web course #1 - git: 從零開始 - 如何利用版本控制提升網站開發團隊效益KSDG web course #1 - git: 從零開始 - 如何利用版本控制提升網站開發團隊效益
KSDG web course #1 - git: 從零開始 - 如何利用版本控制提升網站開發團隊效益ericpi Bi
 
KSDG BaaS Intro
KSDG BaaS IntroKSDG BaaS Intro
KSDG BaaS Introericpi Bi
 

Destacado (19)

Ecosan–Pit Opening
Ecosan–Pit OpeningEcosan–Pit Opening
Ecosan–Pit Opening
 
Top Ten Secrets of the Libraries of Mexico
Top Ten Secrets of the Libraries of MexicoTop Ten Secrets of the Libraries of Mexico
Top Ten Secrets of the Libraries of Mexico
 
Updated Power Point
Updated Power PointUpdated Power Point
Updated Power Point
 
數位創業最好的技術顧問 - 技術社群
數位創業最好的技術顧問 - 技術社群數位創業最好的技術顧問 - 技術社群
數位創業最好的技術顧問 - 技術社群
 
Quality of Government Data
Quality of Government DataQuality of Government Data
Quality of Government Data
 
AWS vs Azure
AWS vs AzureAWS vs Azure
AWS vs Azure
 
KSDG LT: 6分鐘node.JS就上手
KSDG LT: 6分鐘node.JS就上手KSDG LT: 6分鐘node.JS就上手
KSDG LT: 6分鐘node.JS就上手
 
The ulitmate history prject
The ulitmate history prjectThe ulitmate history prject
The ulitmate history prject
 
MOPCON 2014 - 堅持在濁水溪以南的夢想
MOPCON 2014 - 堅持在濁水溪以南的夢想MOPCON 2014 - 堅持在濁水溪以南的夢想
MOPCON 2014 - 堅持在濁水溪以南的夢想
 
20151127 kh gov-data-training
20151127 kh gov-data-training20151127 kh gov-data-training
20151127 kh gov-data-training
 
KSDG meet-up #1
KSDG meet-up #1KSDG meet-up #1
KSDG meet-up #1
 
Aprendizagem e Tecnologias
Aprendizagem e TecnologiasAprendizagem e Tecnologias
Aprendizagem e Tecnologias
 
讓你的 Web App 跟 Native 一樣使用經驗 - PhoneJS
讓你的 Web App 跟 Native 一樣使用經驗 - PhoneJS讓你的 Web App 跟 Native 一樣使用經驗 - PhoneJS
讓你的 Web App 跟 Native 一樣使用經驗 - PhoneJS
 
前端也能變全端
前端也能變全端前端也能變全端
前端也能變全端
 
快快樂樂利用 PhoneGap 打造屬於自己的 App
快快樂樂利用 PhoneGap 打造屬於自己的 App快快樂樂利用 PhoneGap 打造屬於自己的 App
快快樂樂利用 PhoneGap 打造屬於自己的 App
 
20160521 社群實務及組織協作
20160521 社群實務及組織協作20160521 社群實務及組織協作
20160521 社群實務及組織協作
 
Recursos e ferramentas para produção de videoaulas
Recursos e ferramentas para produção de videoaulasRecursos e ferramentas para produção de videoaulas
Recursos e ferramentas para produção de videoaulas
 
KSDG web course #1 - git: 從零開始 - 如何利用版本控制提升網站開發團隊效益
KSDG web course #1 - git: 從零開始 - 如何利用版本控制提升網站開發團隊效益KSDG web course #1 - git: 從零開始 - 如何利用版本控制提升網站開發團隊效益
KSDG web course #1 - git: 從零開始 - 如何利用版本控制提升網站開發團隊效益
 
KSDG BaaS Intro
KSDG BaaS IntroKSDG BaaS Intro
KSDG BaaS Intro
 

Similar a COSCUP 2010 - node.JS 於互動式網站之應用

Node.js长连接开发实践
Node.js长连接开发实践Node.js长连接开发实践
Node.js长连接开发实践longhao
 
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
 
非常靠谱 Html 5
非常靠谱 Html 5 非常靠谱 Html 5
非常靠谱 Html 5 Tony Deng
 
Go语言web开发
Go语言web开发Go语言web开发
Go语言web开发Andy Shi
 
scrapy+sphinx搭建搜索引擎
scrapy+sphinx搭建搜索引擎scrapy+sphinx搭建搜索引擎
scrapy+sphinx搭建搜索引擎Ping Yin
 
运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践Li JianYe
 
Node Web开发实战
Node Web开发实战Node Web开发实战
Node Web开发实战fengmk2
 
用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Services用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Servicesjavatwo2011
 
高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕ideawu
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践taobao.com
 
Node Web开发实战
Node Web开发实战Node Web开发实战
Node Web开发实战fengmk2
 
独爽不如众乐
独爽不如众乐独爽不如众乐
独爽不如众乐Zheng Biao
 
分享平台构建之旅
分享平台构建之旅分享平台构建之旅
分享平台构建之旅tblanlan
 
Elastic stack day-1
Elastic stack day-1Elastic stack day-1
Elastic stack day-1YI-CHING WU
 
构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 Renaun Erickson
 
Linux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeLinux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeAngel Boy
 
Node js实践
Node js实践Node js实践
Node js实践myzykj
 

Similar a COSCUP 2010 - node.JS 於互動式網站之應用 (20)

Node.js长连接开发实践
Node.js长连接开发实践Node.js长连接开发实践
Node.js长连接开发实践
 
Real time web实时信息流推送
Real time web实时信息流推送Real time web实时信息流推送
Real time web实时信息流推送
 
Real-Time Web实时信息流推送
Real-Time Web实时信息流推送Real-Time Web实时信息流推送
Real-Time Web实时信息流推送
 
非常靠谱 Html 5
非常靠谱 Html 5 非常靠谱 Html 5
非常靠谱 Html 5
 
Html5
Html5Html5
Html5
 
Go语言web开发
Go语言web开发Go语言web开发
Go语言web开发
 
scrapy+sphinx搭建搜索引擎
scrapy+sphinx搭建搜索引擎scrapy+sphinx搭建搜索引擎
scrapy+sphinx搭建搜索引擎
 
运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践
 
Berserk js
Berserk jsBerserk js
Berserk js
 
Node Web开发实战
Node Web开发实战Node Web开发实战
Node Web开发实战
 
用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Services用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Services
 
高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
 
Node Web开发实战
Node Web开发实战Node Web开发实战
Node Web开发实战
 
独爽不如众乐
独爽不如众乐独爽不如众乐
独爽不如众乐
 
分享平台构建之旅
分享平台构建之旅分享平台构建之旅
分享平台构建之旅
 
Elastic stack day-1
Elastic stack day-1Elastic stack day-1
Elastic stack day-1
 
构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接
 
Linux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeLinux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledge
 
Node js实践
Node js实践Node js实践
Node js实践
 

COSCUP 2010 - node.JS 於互動式網站之應用