SlideShare a Scribd company logo
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, 短網誌當道
互動即時是王道!
很久很久以前

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

• 互動性稍好
• 即時性差
現在
既然網站的互動需求越來越高
所以未來的網站技術應該 ...
COSCUP 2010 - node.JS 於互動式網站之應用
未來 – 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+

More Related Content

PPTX
静态项目管理工具 - opm
PPT
Node分享 展烨
PPTX
快速入坑 Node.js - 0613 SITCON 雲林定期聚
PDF
一个 Mongodb command 的前世今生
PPTX
QCon - 一次 Clojure Web 编程实战
PDF
Node js实践
PPT
Erlang游戏开发
PDF
Couchdb Beijing Openparty
静态项目管理工具 - opm
Node分享 展烨
快速入坑 Node.js - 0613 SITCON 雲林定期聚
一个 Mongodb command 的前世今生
QCon - 一次 Clojure Web 编程实战
Node js实践
Erlang游戏开发
Couchdb Beijing Openparty

What's hot (19)

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

Viewers also liked (19)

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

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

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

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