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的发展形势还是大好的。
分享到:
相关推荐
在这个"websocket_node.js(最新安装包+例子+API)node-v0.8.15-x86"的压缩包中,包含的是Node.js的一个较旧版本(v0.8.15)的32位安装包,同时提供了WebSocket相关的示例和API文档,特别强调了二进制流传输和视频通信...
在IT行业中,Node.js因其高效的非阻塞I/O模型和JavaScript的跨平台特性,已经成为构建网络应用的热门选择。本项目以"node.js搭建的聊天小程序"为主题,旨在展示如何利用WebSocket技术创建一个简单的微信小程序聊天...
总之,这个DEMO展示了如何使用Node.js和Socket.IO创建一个WebSocket服务器,用于实现预约叫号系统的实时通信需求。通过深入理解这个DEMO,开发者可以学习到WebSocket的基础用法,以及如何将其应用于实际的业务场景中...
Node.js 是一个开源、跨平台的 JavaScript 运行环境,它让开发者可以在服务器端执行 JavaScript 代码。Node.js 使用了 Google V8 引擎,这个引擎是为 Chrome 浏览器设计的,因此 Node.js 具有高性能和高效性的特点。...
总的来说,这个项目提供了一个基础的WebSocket通信示例,利用Node.js在服务器端建立WebSocket服务,而客户端则使用HTML和JavaScript与服务器进行实时交互。这对于学习和理解WebSocket技术以及开发实时应用是非常有...
总的来说,“websocket_test”项目提供了一个基础的WebSocket通信示例,利用Node.js和JavaScript实现了客户端和服务器之间的实时数据交换,对于学习和理解WebSocket以及Node.js的网络编程非常有帮助。通过深入研究该...
Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它以其非阻塞I/O和事件驱动的模型,为构建高性能的网络应用提供了可能。 Node.js的核心特性包括单线程事件循环、异步编程、模块系统以及强大的文件系统操作等...
Node.js是基于Chrome V8引擎的JavaScript运行环境,它以其非阻塞I/O、事件驱动的特性在服务器端编程领域独树一帜,尤其适合构建高性能的网络应用。本书通过115个关键技巧的讲解,全面覆盖了Node.js的基础到高级应用...
node.js websocket socket.io unity 同步 使用Node.js+socket.io制作服务端,unity+socket.io for unity 制作客户端 ,验证位置同步Demo (Javascript代码可使用Webstorm等IDE进行编写)
《Node.js实战》是一本深度剖析Node.js技术的实战教程,旨在帮助读者掌握构建高效、可扩展的服务器端应用所需的知识和技能。本书的核心内容围绕JavaScript的非阻塞I/O模型,利用Node.js的异步事件驱动架构,来实现高...
Node.js中的WebSocket实现教程.docx
本文将深入探讨Node.js中WebSocket的原理、实现方式以及相关的工具和库。 1. WebSocket协议基础 WebSocket协议是基于TCP的,旨在提供全双工通信,允许数据在服务器和客户端之间双向流动。它通过HTTP/1.1的Upgrade头...
Node.js是一种开源、跨平台的JavaScript运行环境,它允许开发者在服务器端运行JavaScript代码,极大地扩展了JavaScript的应用范围。Node.js基于Chrome V8引擎,因此它具有高性能和高效率的特点。这个压缩包文件包含...
用于Node.js的微型WebSocket中间件,.zip
Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它让JavaScript得以在服务器端运行,打破了JavaScript只能在浏览器中使用的限制。Node.js采用单线程、事件驱动的非阻塞I/O模型,使其在高并发场景下表现出色,...
- **JavaScript执行**:V8引擎是Google为Chrome浏览器开发的高性能JavaScript引擎,Node.js使用V8来解析和执行JavaScript代码,提供快速的运行速度。 - **优化技巧**:理解V8引擎的内存管理和垃圾回收机制,以及...
《新时期的Node.js入门》是李锴在2018年1月出版的一本专为初学者准备的Node.js教程,旨在帮助读者快速掌握这个强大的JavaScript后端开发平台。本书通过丰富的示例代码,深入浅出地介绍了Node.js的基础知识和实际应用...
Node.js是基于Chrome V8引擎的JavaScript运行环境,它允许开发者使用JavaScript来编写服务器端的代码。WebSocket是一种在单个TCP连接上进行全双工通信的协议,是HTML5中的一个新特性,与HTTP协议共享一个端口,但与...
Node.js有许多WebSocket库,如`ws`,我们可以使用这个库来创建WebSocket服务器,处理客户端的连接、发送和接收消息。 2. **Express.js**: Express是Node.js的一个Web应用框架,它简化了HTTP服务器的创建。我们可以...