【Pomelo源码分析】2016-09-20 入门(pomelo命令)

pomelo 框架第三部分 remote/proxy服务 pomelo 框架第三部分 项目地址: https://github.com/NetEase/chatofpomelo-websocket.git 分支:tutorial-protobuf 阅读详情

pomelo命令


bin目录:存放pomelo脚本命令
使用#!/usr/bin/env node来表示该文件使用node执行

使用commander模块(https://github.com/tj/commander.js)进行命令的接收以及参数绑定等

init

pomelo init:

  • 项目初始化,接收一个参数做为项目根路径,若没有路径,则直接使用当前路径为项目根路径。调用init函数。

init:

  • 用户选取connector类型,默认为websocket,数字对应为1-websocket,2-socket.io,3-wss,4-socket.io(wss),5-udp,6-mqtt
  • 若当前目录为空,则直接调用createApplicationAt函数,并传入路径和connector类型。若不为空则请求用户许可后新建项目。
  • 用户许可使用命令行提示prompt,并用正则表达式确定是否输入y或yes。

createApplicationAt:

  • 将template文件夹下的所有文件拷贝到目标路径,并创建game-server/logs和shared文件夹
  • 等待1秒的时间保证文件均已拷贝同步完毕
  • 根据connector的类型删除冗余文件或文件夹
  • init初始化完成

start

pomelo start

  • 项目启动命令。设置运行环境,-e或–env、默认为development;设置是否为守护启动,-D为守护;设置启动路径,-d或–directory,默认为当前路径;设置启动的服务器类型,-t或–type;设置启动服务器ID,-i或–id。并调用start函数。

start:

  • 根据-d的设置路径,若无,则使用当前路径,合成出app.js的绝对路径
  • 若当前文件夹下不存在app.js,则报错退出;若logs文件夹不存在,则创建logs文件夹。
  • 合成运行参数,若deamon启动,则另起新的进程启动node app.js,传入运行参数,并设置为detached,丢弃stdio。使用unref使父进程释放子进程引用,之后父进程退出。若非deamon启动,则直接新建子进程来启动node app.js,传入运行参数,并将标准输出流和错误流定向到console输出。

list

pomelo list

  • 列出当前启动的服务器。设置用户名,-u或–username,默认为admin;设置密码,-p或–password,默认为admin;设置master服务器的IP,-h或–host,默认为127.0.0.1;设置master服务器的端口号,-P或–port,默认为3005。并调用list函数。

list:

  • 设置当前id为pomelo_list_+当前时间戳
  • 使用pomelo-admin的adminClient带上id和设置参数连接master服务器。
  • 连接成功后发送list请求,并取得当前应用的所有服务器列表。
  • 使用服务器的类型和ID对服务器列表进行排序,并组合出每一行的显示内容。
  • 使用cliff(https://github.com/flatiron/cliff)对行数据进行格式化输出。

add

pomelo add

  • 新添一个服务器。设置用户名,-u或–username,默认为admin;设置密码,-p或–password,默认为amdin;设置master服务器的IP,-h或–host,默认为127.0.0.1;设置master服务器的端口号,-P或–port,默认为3005。

add:

  • 设置当前id为pomelo_add_+当前时间戳。
  • 使用pomelo-admin的adminClient带上id和设置参数链接master服务器。
  • 连接成功后带上args参数发送add请求,并输出结果。

stop & kill

pomelo stop & kill

  • 停止服务器或直接杀掉应用。设置用户名,-u或–username,默认为admin;设置密码,-p或–password,默认为amdin;设置master服务器的IP,-h或–host,默认为127.0.0.1;设置master服务器的端口号,-P或–port,默认为3005。
  • 其中kill可带force参数,如果具有force参数,则直接在本地使用操作系统命令杀死进程。(注意:无论是Windows还是Linux系统,force kill会杀掉所有的node进程,包括不是pomelo启动的进程)

restart

pomelo restart

  • 重启某服务器。设置用户名,-u或–username,默认为admin;设置密码,-p或–password,默认为amdin;设置master服务器的IP,-h或–host,默认为127.0.0.1;设置master服务器的端口号,-P或–port,默认为3005;设置服务器类型,-t或–type;设置服务器ID,-i或–id。然后调用restart函数。

restart:

  • 设置当前id为pomelo_restart_+当前时间戳
  • 使用pomelo-admin的adminClient带上id和设置参数连接master服务器。
  • 连接成功后发送restart请求,带有serverIds数组和type类型,并打印master返回的信息。

masterha

pomelo masterha

  • 启动某master服务器的所有slave服务器。设置启动路径,-d或–directory,默认为当前路径。并调用startMasterha函数。

startMasterha:

  • 查找config/masterha.json文件,若没有则报错退出。
  • 获取masterha配置,并对其中的server逐个进行ranServer操作启动。

runServer:

  • 解析server变量中的host信息,根据是否为本地IP,分别调用starter中的localrun和sshrun来运行。

总结

pomelo命令的所有内容如上所示,其中有utils、starter、console等几个辅助工具类还没有细看。但可以看出,在init出的工程中带有用户名和密码设置,是用于登录master服务器使用的,master服务器是用于管理所有其他服务器的中控机,所以需要验证登录。其他的大部分操作、监控服务器都是通过master进行的,这部分需要优先着重阅读。另外需要格外注意不要瞎用pomelo kill -f,这个命令会杀掉所有node进程,这个实现真的是太诡异了。

pomelo源码分析(6)--connector协议处理message 作者:shihuaping0918@163.com,转载请注明作者pomelo框架核心提供了sioconnector,udpconnector,hybirdconnector,mqttconnector。sioconnector基于socket.io,使用json通信,pc端通信。hybirdconnector基于tcp和websocket,使用二进制通信,主要用于手机端通信。mqttconnect 阅读详情

相关推荐

pomelo的安装

pomelo的游戏服务端的开发,避免走弯路,希望对你们有用的

游戏服务器框架pomelo基础详解

一 . pomelo 介绍 pomelo是一个游戏服务器框架,与以往单进程的游戏框架不同, 它是高性能、高可伸缩、分布式多进程的游戏服务器框架,并且使用很简单。它包括基础开发框架和一系列相关工具和库,可以帮助开发者省去游戏开发中枯燥的重复劳动和底层逻辑工作,免除开发者的重造轮子,让开发者可以更多地去关注游戏的具体逻辑,大大提高开发效率。pomelo强大的可伸缩性和灵活性使得pomelo也可以作为通...

Dream wedding 1万+

最新H5大圣完整运营版源码+透视+完美控制+防反杀

最新H5大圣完整运营版源码+透视+完美控制+防反杀

pomelo支持wss

pomelo原生是支持wss,我们只需要配置一下就好了~ 1.在app.js同级的目录下面,创建一个key目录,将下载ssl证书xxx.key和xxx.crt放到这个目录 2.打开app.js,找到所有有connectorConfig的配置,增加下面内容 app.set('connectorConfig', { connector : pomelo.connectors.hybridconnector, useProtobuf : t...

avsys_z的博客 410

从零搭建一个虚拟ECU:手把手用Autosar CP模块模拟汽车灯控系统(基于Vector工具链)

本文详细介绍了如何使用Vector工具链从零搭建一个基于Autosar CP架构的虚拟ECU系统,模拟汽车灯光控制功能。通过环境搭建、模块配置、通信栈设置到灯光控制逻辑实现的全流程指导,帮助开发者掌握Autosar CP模块术语的实际应用,并提供了系统集成与测试的实用方案。

weixin_42628688的博客 312

(MIUI)小米手机录音文件深度寻踪:从系统缓存到数据目录的实战解析

本文深入解析了MIUI系统中录音文件丢失的常见原因及解决方案,包括系统升级兼容性问题、应用缓存机制异常和存储权限变动。通过实战操作指南,详细介绍了如何从系统目录、数据库层面恢复录音文件,并提供了预防措施和自动化备份方案,帮助小米手机用户有效找回重要录音数据。

weixin_42699679的博客 518

Pomelo使用参考手册

基本使用 rpc调用方法 handler调用 session绑定 消息回复(next调用) 消息发送(channelservice的使用) 增加不同类型的服务器 protobuf使用 字典压缩使用 组件功能及配置说明 connector connector encode decode useCrypto blacklistFun useDict useProtobuf ssl disconnect...

疯狂的程序员 4169

本地AI代码助手:智能解析大型代码库,实现自动化重构与理解

在软件开发中,大型代码库的理解与维护是常见挑战。传统方法依赖人工阅读和有限上下文工具,效率低下。通过结合检索增强生成(RAG)和多智能体(Multi-Agent)架构,现代AI工具能够智能解析代码结构,理解模块关系,并精准定位相关代码片段。这种技术不仅能提升代码探索效率,还能自动化执行重构、文档生成等任务,在遗留系统维护、快速上手新项目等场景中发挥关键作用。本文以blackboxaicode/cli为例,展示了如何利用其代码感知和Workflow Automation能力,高效处理复杂代码库。

weixin_30240349的博客 365

pomelo命令行管理pomelo项目

1,pomelo的启动 pomelo start -e development | production 这个没什么问题 2,查看服务器 pomelo list -p port (这个地方,后面端口必须是master的端口,必须与你项目里config里master的配置一致,还有-p有时候没有用就试试--port) 这个命令会把你这个项目下面的所有服务器列出来 以及内存情况之类的,很直观。 3,pomelo的停止 pomelo stop -h 127.0.0.1 -p port -u usernam

u012609443的专栏 6979

MounRiver避坑实录:手把手迁移CH32V307 EVT工程到自定义目录

本文详细记录了将沁恒CH32V307的EVT工程迁移到自定义目录的完整流程与避坑指南。针对MounRiver Studio的虚拟链接机制,重点讲解了如何清理旧配置、重新设置头文件路径、链接脚本等关键步骤,帮助开发者创建独立、可维护的MCU项目工程。

uber9的博客 244

【实战】小红书笔记爬虫终极指南:模拟滑动加载,抓取图文(2026最新版)

小红书作为国内最大的生活方式分享社区,每天产生海量的图文笔记。对于数据分析、市场调研、竞品分析等需求,爬取小红书公开笔记成为一项常见任务。然而,小红书的反爬机制日益升级——接口加密、动态Token、滑动验证、设备指纹……本文将深入剖析小红书Web端和App端的爬取技术,手把手教你用Python实现模拟滑动加载、自动抓取图文笔记的完整爬虫系统。全文包含大量代码、原理分析和排坑经验,适合有一定爬虫基础的读者进阶学习。目录前言一、小红书反爬机制概览二、环境准备2.1 Python环境2.2 浏览器驱动。

2201_76125261的博客 766

pomelo源码解析之模块解析(三)

文章目录pomelo-admin源码解析子模块解析:pomelo-admin/clientpomelo-admin/masterpomelo-admin/modulespomelo-admin/monitorpomelo-admin/protocol/mqttmqtt简单介绍mqtt库所实现的客户端和服务器详解整体结构消息传输流程对外接口tipspomelo-monitor解析 pomelo-ad...

versace的博客 2065

你分得清ChatGPT、Gemini、Grok、豆包、千问、DeepSeek、OpenClaw、CloudCode、vibeCodeing、sKill、MCP,飞书、微信这些到底是什么吗?

AI技术生态呈现层级化发展,从基础模型到应用平台形成完整技术栈。核心分为五层:模型层(GPT、Gemini等基础模型)→AI助手层(ChatGPT等应用产品)→工具层(ClaudeCode等开发工具)→协议层(MCP等接口标准)→应用层(微信、飞书等平台)。未来趋势将形成"模型公司-开发框架-应用生态"三层结构,AI正逐步演变为新型操作系统,通过标准化协议连接各类外部系统,实现能力调用与生态整合。技术发展呈现出从底层基础设施到上层应用场景的垂直整合特征。

hy行者勇哥的博客 397

【Pomelo源码分析】2016-09-21 程序入口(app.js, pomelo.js, application.js)

Pomelo程序入口,app.js、pomelo.js、application.js文件的源码分析

u010334580的博客 1875

Arcgis模型构建器01——写一个简单的模型

在使用模型构建器解决这个需求之前,我们要想清楚如果我们手动解决的话,应该如何去处理,因为构建模型的过程正是基于我们手动处理的过程来构建的。我有一个全国的dem影像数据和一个陕西省边界范围矢量,现在我想获取陕西省的dem影像的坡度数据。填写完之后点击确定,我们发现,两个输入数据和工具连接起来了,并且通过裁剪工具得到一个中间结果,即。我们发现工具框和中间数据框都存在阴影,说明已经运行过了这个模型,不报错就说明模型运行成功!现在我们就把数据和工具都串联起来了,成功构建好了模型。

爱吃雪糕的小布丁的博客 918

【DRAM存储器四十六】LPDDR5介绍--基本操作之行操作、读、写

简述LPDDR5的行操作和读写时序

highman110的博客 763

工具和库的使用--pomelo命令行工具

概述 命令行工具pomelo是Pomelo框架提供的一个小工具,该工具能够帮助开发者更便捷、更有效率地进行应用开发。该工具包括的命令支持绝大多数的应用开发操作,包括创建初始项目、启动应用、停止应用、关闭应用等。用户可以通过pomelo --help命令查询相关命令及其使用说明。 命令行安装 当使用如下命令安装Pomelo的时候,pomelo会自动安装在相应的bin目录下: $ npm instal...

疯狂的程序员 1185

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

七星棋牌地方定制源码服务搭建教程

七星棋牌源码,相信很多人都拿到了,源码搭建需要有一定的编程基础。本篇文章大概的讲下七星源码的本地环境搭建过程,搭建好本地环境可以用于二开时的调试,更快的找到错误异常。

pingziaaa的博客 1万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

pomelo 的一些监控和维护插件(工具)

POMELO 提供了非常多的插件,可以方便我们日常对其的一些操作和开发工作,同样的我们也可以自己开发一些定制的插件让其伴随整个POMELO的生命周期运作(这里 不是要介绍如何制作POMELO插件),这里还是详细的介绍几种POMELO中比较有用的插件,通过这些插件的工作原理也可以让大家更加了解一些 POMELO的工作原理(不对之处非常感谢指证~),之前介绍过压力测试工具,今天介绍一下可以配合压力

aa294194253的专栏 2028

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Pomelo

Pomelo(柚子)是基于Node.js的高性能分布式游戏服务框架,它包含基础的开发框架和相关的扩展组件(库和工具包)。Pomelo不但适用于游戏服务器开发也可以用于开发高实时的Web应用,它的分布式架构使Pomelo比普通实时Web框架性能更好。 Pomelo是游戏服务器框架,本质上也是高实时、高扩展、多进程的应用框架,除了在提供的库部分有游戏专用的库,其余部分框架完全可用于开发...

JunChow 3920

pomelo html5,Pomelo命令行工具使用

概述命令行工具pomelo是Pomelo框架提供的一个小工具,该工具能够帮助开发者更便捷、更有效率地进行应用开发。该工具包括的命令支持绝大多数的应用开发操作,包括创建初始项目、启动应用、停止应用、关闭应用等。用户可以通过pomelo --help命令查询相关命令及其使用说明。命令行安装当使用如下命令安装Pomelo的时候,pomelo会自动安装在相应的bin目录下:$ npm install po...

weixin_27033895的博客 462

pomelo使用笔记

简单介绍 pomelo是网易12年底出品的一个基于node.js的游戏服务器框架,其设计初衷是游戏服务器, 不过在设计、开发完成后发现pomelo是个通用的分布式实时应用开发框架。 1.1.一些资源地址 github:https://github.com/NetEase/pomelo 官网:http://pomelo.netease.com/ api:http://pomelo.netea...

嘿嘿 1万+

pomelo学习记录

刚进了一个手机游戏的公司,但是之前从来没接触过任何这方面的事物,什么nodejs,mongodb,pomelo听都没听过,所以几乎是从零学起,开几个贴记录一下自己的一点学习心得,想到什么就写什么了,顺序可能比较混乱 pomelo指令 开启服务器 查看服务器 cmd下输入pomelo list可以查看已经启动的服务器 网上看了很多说这样就可以查看的,但是我试了好多遍都出不来啊,后来总算知道怎么查...

From zero 830

3分钟上手Pomelo命令行:从安装到服务器运维的零代码指南

你还在为分布式游戏服务器的搭建流程繁琐而头疼?是否曾因命令行参数复杂而放弃尝试?本文将带你一站式掌握Pomelo命令行工具的核心用法,无需深入代码即可完成从项目创建到服务器集群管理的全流程操作。读完本文后,你将能够独立搭建游戏服务器框架、灵活配置多协议连接、高效管理服务器生命周期,并解决90%的常见运维问题。 ## 安装与环境准备 Pomelo命令行工具的安装过程非常简单,只需一行npm命令即...

gitblog_00799的博客 816

认识一下pomelo

pomelo是一个,与以往单进程的游戏框架不同, 它是高性能、高可伸缩、分布式多进程的游戏服务器框架,并且使用很简单。它包括基础开发框架和一系列相关工具和库,可以帮助开发者省去游戏开发中枯燥的重复劳动和底层逻辑工作,免除开发者的重造轮子,让开发者可以更多地去关注游戏的具体逻辑,大大提高开发效率。pomelo使得pomelo也可以作为通用的分布式实时应用开发框架,用于一些高实时应用的开发,而且pomelo在很多方面的表现甚至超越了现有的开源实时应用框架。pomelo。

2301_76439627的博客 1731

5分钟上手Pomelo MQTT连接器:打造物联网游戏交互新体验

Pomelo是一个基于Node.js的快速、可扩展、分布式游戏服务器框架,其MQTT连接器为游戏开发带来了物联网交互的全新可能。通过MQTT协议,开发者可以轻松实现低延迟、高可靠的设备间通信,为游戏增添更多创新玩法。 ## 什么是Pomelo MQTT连接器? Pomelo MQTT连接器是框架内置的通信组件,位于`lib/connectors/mqttconnector.js`路径下。它通过

gitblog_01139的博客 780
下一篇: 【Pomelo源码分析】2016-09-21 程序入口(app.js, pomelo.js, application.js)
赵生宇
博客等级 码龄14年 3粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值