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而不是http
socket.onopen(event)
socket.send()
socket.onmessage()
socket.onclose()
客户端编程很容易。服务端呢?
由于websocket协议规定了他需要有一个握手过程:
客户端:
GET /call HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade
Host: localhost:8080
Origin: http://localhost
Cookie: somenterCookie
服务端:
HTTP/1.1 101 Web Socket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
WebSocket-Origin: http://localhost
WebSocket-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的发展形势还是大好的。
分享到:
相关推荐
这个是,预约叫号系统的服务器端代码。用node.js写的,使用了webSocket的 SocketIo
websocket_test 测试websocket使用node.js
node.js websocket socket.io unity 同步 使用Node.js+socket.io制作服务端,unity+socket.io for unity 制作客户端 ,验证位置同步Demo (Javascript代码可使用Webstorm等IDE进行编写)
是使用websocket搭建的简单微信小程序聊天,可以作为学习使用
node-v0.8.15-x86 NODE.JS的官方最新安装包以及官方API 还有几个有关websocket的例子 有关于二进制流的传输以及视频通信等例子 binaryjs
node.js websocket
一个微信小程序,实现了后台数据前台显示,具备WebService和WebSocket调用功能,可以实现基本的XML解析。WebService用PHP实现,WebSocket用Node.js开发。相关的测试代码已经包含。
本地实现webCocket的双向数据实时通讯。要求本地装有nodejs环境,使用node 运行index.js,然后打开web文件夹下面例子即可看到效果
利用websocket实现简单的外网映射工具,便于日常调试接口
If you already know the basics of Node.js, now is the time to discover how to bring it to production level by leveraging its vast ecosystem of packages.With this book, you'll work with a varied ...
全书共16章,分三个部分: ...第三部分(第1~12章)从Node.js的特性、优势、适用场景、安装配置到各个模块的功能作用,再到开发的具体方法和技巧,非常详尽地讲解了Node.js开发者必备的各种基础知识;
打开新的cmd窗口,切换到jsmpeg-master,执行node websocket-relay.js supersecret 8000 8082 第一个端口是你rtsp源的端口,第二个是你ws的端口区流的端口6.执行ffmpeg -i "你的rtsp地址" -q 1 -f mpegts ...
基于Node.js框架Koa实现的Websocket聊天机器人源码(毕业设计).zip基于Node.js框架Koa实现的Websocket聊天机器人源码(毕业设计).zip基于Node.js框架Koa实现的Websocket聊天机器人源码(毕业设计).zip基于Node.js框架...
毕业设计-基于vue与JavaScript的聊天室、websocket、socket.io实现
《Node.js权威指南》旨在成为Node.js领域最全面、最系统和最具实战性的一本书,供初学者系统学习和开发者工作时参考。本书作者是资深Web开发专家,不仅全面、细致地讲解了Node.js的所有功能、特性、使用方法和开发...
SockJS 为您提供了一个连贯的、跨浏览器的 Javascript API,它可以在浏览器和 Web 服务器之间创建一个低延迟、全双工、跨域的通信通道,无论是否有 WebSocket。这需要使用 Node.js 服务器(这是 Node.js 的一个版本...
基于nodejs-websocket模块、Socket.io库实现多人在线聊天室[丰富了上传图片,发送表情等实用聊天功能]
将Node.js上的WebSocket和Socket.IO与Express.js进行比较-示例服务器端和客户端代码,以查看Express.js应用程序中WebSocket和Socket.IO的基本用法,并提供有关如何比较实际的网络流量(许多在线资源通常会误解)。...
搭建webSocket服务器,以及运行一个jsmpeg的js文件,Node.js采用C++语言编写而成,它不是Javascript应用,它通过Node.js实现WebSocket服务端,同时也提供客户端JS库。Socket.IO支持以事件为基础的实时双向通讯,它...
基于node.js+express+websocket 搭建的简单的即时聊天服务器,内容简单实用,可加以拓展。