借助node实战WebSocket
2016-05-18 00:15
399 查看
一、WebSocket概述 |
如下:
ws://127.0.0.1或wss://127.0.0.1就是WebSocket请求。
注:ws表示WebSocket协议,wss表示加密的WebSocket协议。
WebSocket的好处就是允许服务器和客服端进行实时地互相通信,而不像Ajax那样,只能由客服端发起请求,并且WebSocket不受同源策略限制,这恰恰是Ajax的软肋。
好了,初步了解WebSocket后,我们就一起一步步探究实现一个Demo吧。
二、客服端之旅 |
如下:
//需要ws模块 var WebSocketServer = require('ws').Server; var wss = new WebSocketServer({port: 8080}); wss.on('connection', function(ws){ ws.on('message', function(message){ var obj = JSON.parse(message); console.log('received: %s', obj.time); }); ws.send('hello world'); }); console.log('running!!');
EntireCode
四、运行 |
首先,运行node搭建的简易服务器(我将其存储在D:WebSocket/server.js)。
如下:
接着,运行客服端代码,打开chrome调试器得下:
再看看刚才的node环境,得下:
固,它们已经可以互相通信了。
我们再打开chrome调试器,具体看看WebSocket请求,如下:
在RequestHeaders中,”Connection:Upgrade”表示浏览器通知服务器,如果可以就升级为websocket协议。Origin用于验证浏览器域名是否在服务器许可范围内。Sec-WebSocket-Key则用于握手协议密钥,是base64编码的16字节随机字符串。Upgrade头信息表示将通信协议从HTTP/1.1转向该项所指定的协议。
在ResponseHeaders中,”Connection:Upgrade”通知浏览器,需要改变协议。Sec-WebSocket-Accept是服务器在浏览器提供的Sec-WebSocket-Key字符串后面,添加“258EAFA5-E914-47DA-95CA-C5AB0DC85B11” 字符串,然后再取sha-1的hash值。浏览器将对这个值进行验证,以证明确实是目标服务器回应了webSocket请求。
五、拓展阅读 |
[2] Divid Walsh,WebSocket and Socket.IO
[3] socket.io
[4] Writing WebSocket client applications
[5] WebSockets:A Guide
相关文章推荐
- NodeJS、NPM安装配置步骤(windows7 64位)
- Node.js刷新session过期时间的实现方法推荐
- Node.js返回JSONP详解
- Node.js 回调函数
- Node.js 测试总结
- JavaScript DOM 中获取chilsnodes
- JavaScript DOM 中获取chilsnodes
- JavaScript DOM 中获取chilsnodes
- JavaScript DOM 中获取chilsnodes
- JavaScript DOM 中获取chilsnodes
- JavaScript DOM 中获取chilsnodes
- JavaScript DOM 中获取chilsnodes
- JavaScript DOM 中获取chilsnodes
- JavaScript DOM 中获取chilsnodes
- JavaScript DOM 中获取chilsnodes
- JavaScript DOM 中获取chilsnodes
- JavaScript DOM 中获取chilsnodes
- JavaScript DOM 中获取chilsnodes
- JavaScript DOM 中获取chilsnodes
- LeetCode 237. Delete Node in a Linked List