没有合适的资源?快使用搜索试试~ 我知道了~
使用Node.js作为完整的云环境开发堆栈
0 下载量 97 浏览量
2021-03-03
16:56:43
上传
评论
收藏 150KB PDF 举报
温馨提示
本文探讨Node.js,这是一个用于UNIX?类平台上V8JavaScript?引擎的事件驱动的I/O框架,设计这一框架的目的是为了编写可伸缩的网络程序,如Web服务器。本文通过一个完整的例子说明如何在Node.js中构建聊天服务器,分析了这个框架以及围绕它的生态系统(包括云计算产品),并对这个框架进行了总结。随着技术创新表面上继续以指数级速度发展,新思想层出不穷。服务器端的JavaScript就是这些新思想之一。Node.js是一种事件驱动的I/O框架,用于UNIX类平台上的V8JavaScript引擎,适合于编写可伸缩的网络程序,如Web服务器。Node.js正是这种新思想的实现。Node
资源推荐
资源详情
资源评论
使用使用Node.js作为完整的云环境开发堆栈作为完整的云环境开发堆栈
使用通过回调的异步 I/O 开发并发模型,并构建聊天服务器
本文探讨 Node.js,这是一个用于 UNIX? 类平台上 V8 JavaScript? 引擎的事件驱动的 I/O 框架,设计这一框架的目的是为了
编写可伸缩的网络程序,如 Web 服务器。本文通过一个完整的例子说明如何在 Node.js 中构建聊天服务器,分析了这个框架
以及围绕它的生态系统(包括云计算产品),并对这个框架进行了总结。
随着技术创新表面上继续以指数级速度发展,新思想层出不穷。服务器端的 JavaScript 就是这些新思想之一。 Node.js 是一
种事件驱动的 I/O 框架,用于 UNIX 类平台上的 V8 JavaScript 引擎,适合于编写可伸缩的网络程序,如 Web 服务器。
Node.js 正是这种新思想的实现。
Node.js 并非与 JavaScript 抗衡,而是使用它作为完整的开发堆栈,从服务器端代码一直延伸到浏览器。Node.js 还充分利用
了另一种 创新思想:通过回调利用异步 I/O 的并发性模型。
Node.js 云计算平台
在云计算环境中使用 Node.js 框架时,能显示出它的一个巨大优点。对于应用程序开发人员,这往往归结使用平台即服务
(PaaS) 或基础架构即服务 (IaaS) 模型。对于开发人员而言,最抽象和公认最方便的方法是使用 PaaS 提供程序。图 1 十分简
单地说明了 PaaS 和 IaaS 模型的结构。
图 1. PaaS 与 IaaS 结构
最近,一个激动人心的开源项目 Cloud Foundry 公布了代码以创建一个能够运行 Node.js 的私有 PaaS。 同样的主机引擎也可
用在公共云和商业云中,而且它们接受软件补丁。
基础架构管理是一大痛点,如果能够将这项工作外包(永远!)给规模经营的提供商,且无论是源代码,还是物理硬件资源,
对于开发人员确实是一个激动人心的时刻。
使用 Node.js shell
在我们着手编写一个完整的 Node.js 例子之前,让我们先开始介绍如何使用交互式 shell。如果尚未安装 Node.js,您可以参考
资源部分,然后按照说明安装它,或者使用在线的交互式 Node.js 站点之一,它允许您直接在浏览器中输入代码。
要在 Node.js 中以交互方式编写 JavaScript 函数,在命令行提示中输入node,如下所示:
lion% node
> var foo = {bar: 'baz'};
> console.log(foo);
{ bar: 'baz' }
>
在这个例子中,创建了对象foo,然后调用console.log 将它输出到控制台。 这十分有效而且有趣,不过当您使用 tab 完成功能
来探讨 foo 时,如下面的例子所示,真正的乐趣才刚刚开始。 如果输入 foo.bar.,然后按下 tab 键,您将看到对象上的可用方
法。
> foo.bar.
[...output suppressed for space...]
foo.bar.toUpperCase foo.bar.trim
foo.bar.trimLeft foo.bar.trimRight
试用 toUpperCase 方法似乎很有趣,下面显示了它的用法:
> foo.bar.toUpperCase();
'BAZ'
您可以看到,该方法将字符串转换为大写字母。这类交互式开发非常适合于使用像 Node.js 这样的事件驱动型框架进行开发。
在完成简单介绍之后,我们开始真正地构建一些东西。
用 Node.js 构建聊天服务器
Node.js 让编写基于事件的网络服务器变得十分简单。例如,让我们创建一些聊天服务器。 第一个服务器十分简单,几乎没有
什么功能,也没有任何异常处理。
一个聊天服务器允许多个客户端连接到它。每个客户端都可以编写消息,然后广播给所有其他用户。下面给出了最简单的聊天
服务器的代码。
net = require('net');
var sockets = [];
var s = net.Server(function(socket) {
sockets.push(socket);
socket.on('data', function(d) {
for (var i=0; i < sockets.length; i++ ) {
sockets[i].write(d);
}
});
});
s.listen(8001);
在不到 20 行代码中(实际上,真正实现功能的代码只有 8 行),您已经构建了一个能够使用的聊天服务器。 下面是这个简单
程序的流程:
1.当一个套接字进行连接时,将该套接字对象附加到一个数组。
2.当客户端写入它们的连接时,将该数据写到所有的套接字。
现在,让我们检查所有代码,并解释这个例子如何实现聊天服务器预定功能。第一行允许访问 net 模块的内容:
net = require('net');
让我们使用这个模块中的 Server。
您将需要一个位置来保存所有客户端连接,以便在写入数据时可以写到它们中去。 下面是用于保存所有客户端套接字连接的
变量:
var sockets = [];
下一行开始一个代码块,规定当每个客户端连接时要做的事情。
var s = net.Server(function(socket) {
传递到 Server 中的惟一参数是将针对每个客户端连接进行调用的一个函数。 在这个函数中,将客户端连接添加到所有客户端
连接的列表中:
sockets.push(socket);
剩余6页未读,继续阅读
资源评论
weixin_38528086
- 粉丝: 2
- 资源: 921
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于TensorflowLite的AI狗识别系统.zip
- (源码)基于Qt框架的3D点云与模型可视化系统.zip
- JAVA的SpringBoot企业级进销存ERP管理系统源码 java进销存源码数据库 MySQL源码类型 WebForm
- (源码)基于Python的学生管理系统.zip
- 图片oraclemysal
- 深入讲解贪心算法及其Python实现与实例应用
- java人力资源HR管理系统源码数据库 MySQL源码类型 WebForm
- BT_esp32_370_DRV8833_BALANCE_verticalPID_turnPID.ino
- buildroot package使用示例
- C#ASP.NET快速开发平台源码带视频教程和操作手册数据库 SQL2008源码类型 WebForm
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功