WebSocket和node.js
来源:互联网 发布:转门看lpl软件 编辑:程序博客网 时间:2024/05/28 15:06
web技术这些日子的发展可谓是有变革性的发展,已不仅局限于web2.0的ajax异步刷新的层面了。个人认为HTML5后真正能够带来变革性意义的技术主要在于WebGL、本地操作的支持,然而web发展不仅仅存在与客户端,服务端技术也发生着变革,Websocket和node.js就是其中的代表,web服务的实时性和异步性带了的革命不亚于客户端的革命。
一般的web模型都是基于get和post的,所有的动作的发起点只有web页面。
如果需要服务器主动推送数据给客户端怎么办呢?有两种方法一种是客户端轮询,另一种是长连接。
客户端轮询在ajax普遍使用之前都是频刷页面来实现,性能和用户体验自然差很多,好在ajax出现后js异步响应,但是客户端需要有专门的定时事件去抓取服务端数据,性能也不会很好。长连接方式需要服务端和客户端的协作了,客户端发起长连接,服务端也不能断开,保持一条通讯通道,但是由于这条通道的存在,请求也就不可能结束,页面一直处于请求状态而不能结束,所以为了不影响主页面的加载过程一般会添加一个隐藏的frame来保持连接,但是会受到跨域的限制。这却不能从根本上解决问题,websocket的技术应运而生,当然首先需要浏览器的支持。websocket是客户端和服务端异步通信的技术。他是建立在http协议之上的,在客户端编程你不需要做任何过多的操作只需要使用WebSocket对象就可以了。他包括三种事件:打开连接、消息到达、关闭连接,和一个动作:发送数据。如下:
var socket = new WebSocket("ws://localhost:80")//注意:websocket使用的是ws而不是httpsocket.onopen(event)socket.send()socket.onmessage()socket.onclose()
客户端编程很容易。服务端呢?
由于websocket协议规定了他需要有一个握手过程:
客户端:GET /call HTTP/1.1Upgrade: WebSocketConnection: UpgradeHost: localhost:8080Origin: http://localhostCookie: somenterCookie服务端:HTTP/1.1 101 Web Socket Protocol HandshakeUpgrade: WebSocketConnection: UpgradeWebSocket-Origin: http://localhostWebSocket-Location: ws://localhost:8080/call通讯数以”\x00″开头以”\xFF”结尾。具体数据收发过程和一般的通讯过程没什么两样了。
这些标准使得我们在服务端需要去重新做一些工作。已经有很多人实现了这些,并提供出来供大家使用。
为什么要提到node.js呢?node.js是一个服务端javascript解释器,除了语言上简单很容易实现事件事件驱动外,他真实的优势在于很容易去实现异步。他运行在一个V8引擎基础上,理论上这个模型可以用任意语言来实现,并且已经有人在C++和C#上实现了。
下面是一个node.js的helloworld:
var sys = require("sys"), http = require("http");http.createServer(function(request, response) { response.sendHeader(200, {"Content-Type": "text/html"}); response.write("Hello World!"); response.close();}).listen(8080);sys.puts("running...");web的发展形势还是大好的。
- WebSocket和node.js
- Node.js和websocket
- websocket和node.js使开
- node.js和websocket实现echo
- H5和Node.js快速搭建WebSocket
- CentOS7源码安装node.js和webSocket
- WebSocket 通讯(node.js)
- 使用socket.io和node.js搭建websocket应用
- node.js与websocket入门
- node.js与websocket入门
- 集成node.js中的websocket
- Node.js 长连接(WebSocket)
- websocket node.js 小实例
- node.js express使用websocket
- websocket与node.js的完美结合
- 基于Node.js服务器的WebSocket Video
- Node.js websocket 聊天室 相关资料
- 马年学习Nginx/Node.js/websocket
- oracle数据库SQL查询语句练习
- 开始的NS-3之旅
- 二维数组指针
- Oracle(八)--------------------集合运算
- 《第四周实验报告任务3》
- WebSocket和node.js
- 第四周实验报告3
- 学习SVM
- (转)基础概念:从概念及汇编角度解释指针本质
- ftp shell cmd
- 第四周实验报告1
- 第6章 面向对象的程序设计 (二)
- 第四周任务三
- String abc = "a:baidu@b:sina@c:google",最后以键值对map存放