Node.js的异步I/O通过事件循环的方式实现。其中异步I/O又分磁盘I/O和网络I/O。在磁盘I/O的调用中,当发起异步调用后,会将异步操作送进libuv提供的队列中,然后返回。当磁盘I/O执行完成之后,会形成一个事件,事件循环的过程中发现该事件后,会将其消费。消费过程就是将得到的数据和传入的回 ...
分类:
Web程序 时间:
2017-07-07 00:52:11
阅读次数:
223
1. 获取错误码描述信息 2. 获取错误码字符串表示 参考: https://github.com/libuv/libuv/blob/v1.x/src/uv-common.c https://www.zhihu.com/question/24091286 ...
分类:
其他好文 时间:
2017-06-23 20:47:05
阅读次数:
255
KestrelServer是基于Libuv开发的高性能web服务器,那我们现在就来看一下它是如何工作的。在上一篇文章中提到了Program的Main方法,在这个方法里Build了一个WebHost,我们再来看一下代码: 1 2 3 4 5 6 7 8 9 10 11 public static vo ...
分类:
Web程序 时间:
2017-05-04 10:59:33
阅读次数:
260
node-ctp是一项开创性的工作,解决了CTP接口与node.js结合的问题,源代码在此:https://github.com/zoohanyoo/node-ctp。 感谢zoohanyoo为此所做的努力,相信这其中有很多个不眠之夜,因为libuv和v8都足够复杂。node-ctp最突出的贡献是给 ...
分类:
其他好文 时间:
2017-01-08 10:43:31
阅读次数:
960
使用方法很简单,很容易融入现有项目,使现有项目拥有Web网站功能和WebSocket,以及Socket直连! 并且包含了一个跨平台(windows/linux)工具集合; 嗯,也挺棒的^,^ 在项目中嵌入TinyWeb服务,响应特定path,或输出内部运行状态,或触发某个动作,如此一来,用户(或开发 ...
分类:
Web程序 时间:
2017-01-05 17:57:59
阅读次数:
165
Libevent,libev,libuv三者的区别所在? libevent提供了全套解决方案(事件库,非阻塞IO库,http库,DNS客户端),然而libevent使用全局变量,导致非线程安全。它的watcher结构也过大,把I/O、计时器、信号句柄整合在一起。而且(作者认为)libevent的附加 ...
分类:
其他好文 时间:
2016-12-19 08:50:48
阅读次数:
258
常用的几个库: libevent : 名气最大,应用最广泛,历史悠久的跨平台事件库; libev : 较libevent而言,设计更简练,性能更好,但对Windows支持不够好; libuv : 开发node的过程中需要一个跨平台的事件库,他们首选了libev,但又要支持Windows,故重新封装了 ...
分类:
其他好文 时间:
2016-12-08 18:12:22
阅读次数:
222
声明:本文为原创博文,转载请注明出处。 在libuv中,请求(request)代表一个用户向libuv发出的指令,比如uv_connect_s就表示一个tcp的连接请求、uv_work_s代表要递交给libuv线程池执行的任务请求、uv_write_s代表一个写请求。 类似于上一篇讲句柄(handl ...
分类:
Web程序 时间:
2016-11-20 18:35:58
阅读次数:
162
声明:本文为原创博文,转载请注明出处。 Nodejs编程是全异步的,这就意味着我们不必每次都阻塞等待该次操作的结果,而事件完成(就绪)时会主动回调通知我们。在网络编程中,一般都是基于Reactor线程模型的变种,无论其怎么演化,其核心组件都包含了Reactor实例(提供事件注册、注销、通知功能)、多 ...
分类:
编程语言 时间:
2016-11-12 01:45:47
阅读次数:
448
正如维基百科 所说:“Node.js 是谷歌 V8 引擎、libuv平台抽象层 以及主体使用 Javscript 编写的核心库三者集合的一个包装外壳。” 除此之外,值得注意的是,Node.js 的作者瑞恩·达尔 (Ryan Dahl) 的目标是创建具有实时推送能力的网站。在 Node.js 中,他给 ...
分类:
Web程序 时间:
2016-11-10 19:34:51
阅读次数:
195