nodejs循序渐进篇
文章平均质量分 97
从nodejs入门,循序渐进到熟练nodejs,再掌握node的一些常用库,再到熟练掌握1-2个node框架(重点讲网易的pomelo,如何使用pomelo开发一个游戏项目)
前网易架构师-高司机
技术很烂,先后在IBM的Platform Computing,淘米网,网易搬砖,提供免费付费服务器架构设计,服务器疑难问题解决和优化方案,解决复杂的网络问题,提供深度学习相关数据集,商务合作+v(gao_ke104)。
展开
-
(十四)nodejs循序渐进-高性能游戏服务器框架pomelo之开发Treasures游戏
#Tutorial 2 -- Treasures ##描述Treasures游戏是从LordOfPomelo中抽取出来,去掉了大量的游戏逻辑,用以更好的展示Pomelo框架的用法以及运作机制。Treasures 很简单,输入一个用户名后,会随机得到一个游戏角色,进入游戏场景。在游戏场景中地上会散落一些宝物,每个宝物都有分数,玩家操作游戏人物去捡起地上的宝物,然后就能得到相应的分数。##安装和运行 安装pomelonpm install -g pomelo获取源码git ...原创 2020-12-01 17:22:16 · 427 阅读 · 0 评论 -
(十五)nodejs循序渐进-高性能游戏服务器框架pomelo之Protobuf模块
消息压缩在实际编程中,为了减少数据传输带宽的消耗,提高传输效率,pomelo提供了对消息的压缩,包括基于字典的对route的压缩和基于protobuf的对具体传输数据的压缩。route压缩在实际编程中,网络带宽的有效数据负载率是一个值得考虑的问题。特别地,对于移动客户端来说,网络资源往往并不是很丰富,为了尽可能地节省网络资源,往往需要尽大可能地增加数据包的有效数据率。route问题在pomelo编程中,pomelo中的route是用来确定消息的分发路径,将其交给相应的服务器和服务处理的.原创 2020-11-30 14:40:28 · 670 阅读 · 4 评论 -
(十三)nodejs循序渐进-高性能游戏服务器框架pomelo之扩展聊天服务器为机器人自动聊天
RPC的调用问题今天算是又增强了自己对pomelo RPC的认识,因为一个bug。起初,我们游戏的角色信息是作为一个redis缓存对方存放的,有一个不好的地方就是,如果别的地方调用该玩家的信息并进行修改,就可能会出现两处数据修改,结果却只有一处能够修改成功。例如:A接口,B接口。都会获取charInfo并对charInfo 进行修改。先调用A接口, 在A接口处理逻辑的过程中,调用了B接口。这时候A,B获取到的charInfo是一样的,但是,修改的属性值可能不一样,在redis设置缓存的时...原创 2020-11-25 11:27:21 · 412 阅读 · 5 评论 -
(十二)nodejs循序渐进-高性能游戏服务器框架pomelo之创建一个游戏聊天服务器
上个章节我们简单介绍了下pomelo的安装和目录结构,有读者可能觉得有点吃不消,为什么不再深入讲一讲目录结构和里边的库,这里我就不费口舌了,大家可以去官网参考文档说明,本文只告诉大家如何利用这个框架来开发自己的东西。随着文章的后续不断推进,我相信大家会越来越熟悉pomelo,对猪场框架的使用也会越来越得心用手。 新建gate和chat服务器在app/servers目录下新建gate和chat服务器。gate服务器:在一般情况下用户量一台机器就可以支撑,但用户量多...原创 2020-11-24 13:58:49 · 1010 阅读 · 3 评论 -
(十一)nodejs循序渐进-高性能游戏服务器框架pomelo之启动流程和组件
游戏启动过程启动入口在使用pomelo进行游戏开发时,工程目录下的app.js是整个游戏服务器的启动运行入口。app.js中创建项目,进行默认配置并启动服务器的代码如下:var pomelo = require('pomelo');var app = pomelo.createApp();app.set('name', 'nameofproject');app.start();从上面的代码可以看出,用户首先需要在项目中引入pomelo,然后创建application的实例app,接着原创 2020-11-24 13:58:10 · 530 阅读 · 0 评论 -
(十)nodejs循序渐进-高性能游戏服务器框架pomelo之介绍和安装篇
Pomelopomelo是一个快速、可扩展、Node.js分布式游戏服务器框架,对游戏服务器开发感兴趣的同学可以关注关注。之前做页游,端游和手游一直都是用的C++,或者C++ + lua,C++ + golang的方式来开发,说实话,C++用起来得心用手,有多少坑自己心里有点逼数,用的大都是腾讯系的框架库,要么是盛大系的框架库,底层比较稳定,即使如此,但一旦有个项目要立项,之前代码不可换皮的情况下,你发现用C++开发还真的是笨重,因为你可能又得重新编一大堆的库,或许编完就得大半天功夫,有些工具类库可原创 2020-11-24 13:57:46 · 859 阅读 · 0 评论 -
(九)nodejs循序渐进-Express框架(进阶篇)
Express 框架Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。使用 Express 可以快速地搭建一个完整功能的网站。Express 框架核心特性: 可以设置中间件来响应 HTTP 请求。 定义了路由表用于执行不同的 HTTP 请求动作。 可以通过向模板传递参数来动态渲染 HTML 页面。 安装 Express安装 Express 并将其保存到依赖列表中:原创 2020-11-24 13:56:59 · 362 阅读 · 0 评论 -
(八)nodejs循序渐进-事件驱动(进阶篇)
事件驱动程序Node.js 使用事件驱动模型,当web server接收到请求,就把它关闭然后进行处理,然后去服务下一个web请求。当这个请求完成,它被放回处理队列,当到达队列开头,这个结果被返回给用户。这个模型非常高效可扩展性非常强,因为 webserver 一直接受请求而不等待任何读写操作。(这也称之为非阻塞式IO或者事件驱动IO)在事件驱动模型中,会生成一个主循环来监听事件,当检测到事件时触发回调函数。整个事件驱动的流程就是这么实现的,非常简洁。有点类似于观察者模式,事件.原创 2020-11-24 13:56:41 · 360 阅读 · 0 评论 -
(七)nodejs循序渐进-模块系统(进阶篇)
模块系统为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统。模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的。换言之,一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码、JSON 或者编译过的C/C++ 扩展。创建模块Node.js 提供了 exports 和 require 两个对象,其中 exports 是模块公开的接口,require 用于从外部获取一个模块的接口,即所获取模块的 exports 对象。接原创 2020-11-24 13:56:27 · 148 阅读 · 0 评论 -
(六)nodejs循序渐进-数据流和文件操作(基础篇)
BufferJS 语言自身只有字符串数据类型,没有二进制数据类型,因此 NodeJS 提供了一个与 String 对等的全局构造函数 Buffer 来提供对二进制数据的操作。除了可以读取文件得到 Buffer 的实例外,还能够直接构造,Buffer 与字符串类似,除了可以用.length属性得到字节长度外,还可以用[index]方式读取指定位置的字节。例如:var bin = new Buffer([ 0x68, 0x65, 0x6c, 0x6c, 0x6f ]); Buffer 与...原创 2020-11-24 13:56:05 · 309 阅读 · 0 评论 -
(五)nodejs循序渐进-回调函数和异常处理(基础篇)
上篇文章我们讲完了类和对象,接下来我们将要说回调函数原创 2020-11-24 13:55:19 · 347 阅读 · 0 评论 -
(四)nodejs循序渐进-函数,类和对象(基础篇)
上一篇文章讲到了基本数据类型和运算符,相信大家都能做简单的运算,本篇文章将讲述函数,类,对象。函数在nodejs中,一个函数可以作为另一个函数的参数。我们可以先定义一个函数,然后传递,也可以在传递参数的地方直接定义函数。Node.js 中函数的使用与 JavaScript 类似,举例来说,你可以这样做:function say(word) { console.log(word);}function execute(someFunction, value) { someFuncti原创 2020-11-24 13:54:58 · 657 阅读 · 0 评论 -
(三)nodejs循序渐进-值传递和引用传递,深拷贝和浅拷贝(基础篇)
值传递和引用传递值类型变量:存在内存的堆中,比如:a=1引用类型变量 :1.指针存在于栈中,2.引用类型的具体内容存在于堆中 ex:let a={b:1} a的指针指向 堆中的地址0xffac0ec正如我在 第二章说的,number string boolean这三种常规类型的是值传递, 而array,对象这种就属于引用传递了。代码来说话,我们先看看值传递:var int1 = 12;var int2 = int1;int1 = 10000;console.l.原创 2020-11-24 13:54:35 · 1389 阅读 · 0 评论 -
(二)nodejs循序渐进-nodejs基本类型和循环条件语法篇(基础篇)
目录入门之helloworld进阶之helloworld http服务器步骤一、引入 required 模块步骤二、创建服务器基本语法篇变量声明基础类型if else循环语句forfor ... inwhile do和do while运算符加减乘除==, ===, !=, !==typeofnull,undefined,NaN好了, 上一篇文章已经讲了node环境安装,这里我们开始第一个经典程序 hellowor...原创 2020-11-24 13:53:56 · 634 阅读 · 2 评论 -
(一)nodejs循序渐进-nodejs环境安装(基础篇)
目录NodeNode的优点Node.js 安装配置使用nvm管理不同版本的 node 与 npmnvm 与 n 的区别卸载全局安装的 node/npmWindows 安装Linux 安装安装多版本 node/npm在不同版本间切换列出已安装实例在多环境中,npm该如何使用呢?其他命令NodeNode 是一个让 JavaScript 运行在服务器端的开发平台,它让 JavaScript 成为与PHP,Python等服务端语言平起平坐的脚本语言。 no原创 2020-11-24 13:53:28 · 1068 阅读 · 4 评论