NodeJS快速服务端开发 朝沐金风 Shanghai

2,111 views
1,953 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,111
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
18
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • QQ 79194034 Email : [email_address] 微博: weibo.com/bombworm
  • http:// oddments.org/?p =494
  • NodeJS快速服务端开发 朝沐金风 Shanghai

    1. 1. Node JS 快速服务端开发 赵磊 2011-06-18
    2. 2. 为什么要使用 NodeJS
    3. 3. NodeJS 不是服务器 <ul><li>它是让你可以让我们自定义网络服务器 / 客户端的一个工具 </li></ul>
    4. 4. 监听未捕获错误 <ul><li>process.on( 'uncaughtException' , function (err) { </li></ul><ul><li>// 记录错误,不过对这个方法不要太乐观 </li></ul><ul><li>console.dir(err); </li></ul><ul><li>}); </li></ul>
    5. 5. 创建简单 TCP 服务器 <ul><li>var net = require( 'net' ); </li></ul><ul><li>var server = net.createServer( function (socket) { </li></ul><ul><li>socket.write( 'Hello NodeJSrn' ); socket.pipe(socket); </li></ul><ul><li>}); </li></ul><ul><li>server.listen( 1127 ); </li></ul>
    6. 6. 创建简易 HTTP 服务器 <ul><li>var http = require( 'http' ); </li></ul><ul><li>var server = http.createServer( function (req, res){ </li></ul><ul><li>res.writeHead( 200 , { 'Content-Type' : 'text/plain' }); res.end( 'Hello NodeJSrn' ); </li></ul><ul><li>}); </li></ul><ul><li>server.listen( 1127 ); </li></ul>
    7. 7. 创建跨浏览器实时连接服务 <ul><li>git://github.com/LearnBoost/Socket.IO.git </li></ul><ul><li>git://github.com/LearnBoost/Socket.IO-node.git </li></ul><ul><li>WebSocket </li></ul><ul><li>Adobe® Flash® Socket </li></ul><ul><li>AJAX long polling </li></ul><ul><li>AJAX multipart streaming </li></ul><ul><li>Forever Iframe </li></ul><ul><li>JSONP Polling </li></ul>
    8. 8. WebSocket 握手协议
    9. 9. <ul><li>1 取 Sec-WebSocket-Key1 中数字组成字符串 s1 </li></ul><ul><li>2 取 Sec-WebSocket-Key1 中空格数 n1 </li></ul><ul><li>3 s1/n1 取整得到 k1 </li></ul><ul><li>4 k1 每 2 字节作为 ascii 码转换成字符逆序组成 p1 </li></ul><ul><li>5 Sec-WebSocket-Key2 重复 1-4 步取得 p2 </li></ul><ul><li>6 从实体正文中取得最后 8 字节 p3 </li></ul><ul><li>7 MD5(p1+p2+p3) 得到 16 字节的 binary </li></ul>WebSocket 握手协议
    10. 10. <ul><li>Python 算法描述: </li></ul><ul><li>import struct, md5 ... spaces1 = key1.count(&quot; &quot;) spaces2 = key2.count(&quot; &quot;) num1 = int(&quot;&quot;.join([c for c in key1 if c.isdigit()])) / spaces1 num2 = int(&quot;&quot;.join([c for c in key2 if c.isdigit()])) / spaces2 return md5(struct.pack('>II8s', num1, num2, key3)).digest() </li></ul>WebSocket 握手协议
    11. 11. WebSocket 握手协议
    12. 12. Q&A

    ×