摘要: 1. WebSocket介绍 WebSocket协议是一种双向通信协议,它建立在TCP之上,同http一样通过TCP来传输数据,但是它和http最大的不同有两点:1.WebSocket是一种双向通信协议,在建立连接后,WebSocket服务器和Browser/UA都能主动的向对方发送或接收数据,就像Socket一样,不同的是WebSocket是一种建立在Web基础上的一种简单模拟Socket的协议;2.WebSocket需要通过握手连接,类似于TCP它也需要客户端和服务器端进行握手连接,连接成功后才能相互通信。简单的建立握手的时序图如下:握手过程:Browser与WebSocket服务器通过. 阅读全文
posted @ 2013-01-15 00:03 MySirius 阅读(2943) 评论(1) 推荐(1) 编辑
摘要: 1. 模块架构org.apache.coyote.http11包支持http1.1协议,内部分为三类:ARP、NIO、普通http,这里只对最基本的普通http(使用java的IO流,而非NIO流)作简单研究。这个包主要有以下几个类:Http11Protocol,实现了ProtocolHandler接口Http11Processor,实现了ActionHook接口InternalInputBuffer,实现了InputBuffer接口InternalOutputBuffer,实现了OutputBuffer接口InputFilter和OutputFilter接口,具体的实现类在 org.apac 阅读全文
posted @ 2013-01-11 19:20 MySirius 阅读(766) 评论(0) 推荐(0) 编辑
摘要: Coyote是Tomcat的HTTP Connector框架,它处理底层的socket,并将http请求、响应等字节流层面的东西,封装成Request和Response两个类(这两个类是tomcat定义的,而非servlet中的ServletRequest和ServletResponse),供容器使用;同时,为了能让我们编写的servlet能够得到ServletRequest,Tomcat使用了Facade模式,将比较底层、低级的Request包装成为ServletRequest(这一过程通常发生在Wrapper容器一级)。因此,Coyote本质上是为tomcat的容器提供了对底层socket 阅读全文
posted @ 2013-01-10 12:52 MySirius 阅读(1534) 评论(0) 推荐(0) 编辑
摘要: 按照习惯的面向对象的写法,我们很容易写出来这样的模块:var value = -1;function set(num) { value = num;}function get() { return value;}exports.value = value;exports.set = set;exports.get = get;名字就定为Number模块吧。这里我们把value作为一个公开的变量值,并把get和set方法也公开。对模块进行一些操作,却发现:> var n = require('./Number');undefined> n{ value: -1, se 阅读全文
posted @ 2012-05-31 23:53 MySirius 阅读(666) 评论(0) 推荐(0) 编辑
摘要: 最近开始用Node.js写Server端的脚本,由于原来一直在做的.Net中开发理念的影响,在设计上和代码实现上尽可能地进行封装。Node.js中跟.Net中对象最相近的就是Module(模块)了,但渐渐地发现两者的差距其实很大。刚开始我写了一个Module,发现怎么都不对,代码大概是:var fs = require('fs');var data = fs.readFileSync('...');fs.watchFile('...', function(curr, prev) { if(curr.mtime - prev.mtime) { re 阅读全文
posted @ 2012-05-28 00:13 MySirius 阅读(3017) 评论(0) 推荐(0) 编辑