使用pomelo做服务器开发时,无论什么客户端,只要遵循与服务器的线上协议就能够与服务器建立通信。pomelo内置sioconnector、hybirdconnector都定义了自己的协议格式。

服务器通信协议

配置服务器通信协议

$ vim game-server/app.js
const pomelo = require('pomelo');/*** 初始化应用*/
const app = pomelo.createApp();
app.set('name', 'test');//前端服务器配置
app.configure('production|development',  'connector', function(){//连接配置app.set('connectorConfig',{connector : pomelo.connectors.hybridconnector,heartbeat : 3,useDict : true,useProtobuf : true});
});//开启应用
app.start();process.on('uncaughtException', function (err) {console.error(' Caught exception: ' + err.stack);
});

Pomelo支持的通信协议

在与客户端通信时pomelo提供了hybirdconnector和sioconnector,hybirdconnector支持TCP、WebSocket,sioconnector支持socket.io。实际编程中,可使用pomelo提供的接口自定义connector。

前端服务器 协议 通信 适用范围
hybirdconnector pomelo.connectors.hybirdconnector TCP、WebSocket 使用二进制通信 移动端
sioconnector pomelo.connectors.sioconnector socket.io 使用JSON通信 PC端
udpconnector pomelo.connectors.udpconnector UDP 二进制协议 网路环境差数据包小的环境
mqttconnector pomelo.connectors.mqttconnector MQTT 二进制物联网协议 嵌入式设备

pomelo内部有各种协议的实现,典型的有protobuf、mqtt。mqtt物联网协议的特点是体积小、效率高、省电,pomelo+mqtt能实现单机30w在线的推送。

Web端API

Web端JavaScript开发库

对于浏览器来说,HTML5中已经支持了WebSocket,因此使用支持WebSocket的浏览器可以直接与服务器的hybirdconnector建立通信。对于比较旧的浏览器,还没有支持websocket的可使用基于socket.io的方式与服务器建立连接。因此,对于Web端,Pomelo提供了两套开发库,分别适用于支持WebSocket的浏览器和不支持WebSocket的浏览器。

开发库 描述
pomelo-jsclient-socket.io 适用于socket.io
pomelo-jsclient-websocket 适用于websocket

无论是socket.io还是websocket都提供了统一的API

初始化

pomelo.init(params, cb);

客户端pomelo初始化,在客户端第一次调用时使用。参数params中需要指定连接的服务器的主机地址和端口,回调函数cb在连接成功后会进行回调。

pomelo.init = function(params, cb){pomelo.params = params;params.debug = true;var host = params.host;var port = params.port;var url = 'ws://' + host;if(port) {url +=  ':' + port;}socket = io(url, {'force new connection': true, reconnect: false});socket.on('connect', function(){console.log('[pomeloclient.init] websocket connected!');if (cb) {cb(socket);}});socket.on('reconnect', function() {console.log('reconnect');});socket.on('message', function(data){if(typeof data === 'string') {data = JSON.parse(data);}if(data instanceof Array) {processMessageBatch(pomelo, data);} else {processMessage(pomelo, data);}});socket.on('error', function(err) {console.log(err);});socket.on('disconnect', function(reason) {pomelo.emit('disconnect', reason);});
};

请求服务

pomelo.request(route, msg, cb);

request用于请求服务,route是服务端的路由,格式为"xxx.xxx.xxx"。msg为请求内容,cb响应回来后的回调函数。

参数 描述
route 服务端的路由,格式为"xxx.xxx.xxx"。
msg 请求内容
cb 响应成功后的回调函数
pomelo.request = function(route) {if(!route) {return;}var msg = {};var cb;arguments = Array.prototype.slice.apply(arguments);if(arguments.length === 2){if(typeof arguments[1] === 'function'){cb = arguments[1];}else if(typeof arguments[1] === 'object'){msg = arguments[1];}}else if(arguments.length === 3){msg = arguments[1];cb = arguments[2];}msg = filter(msg,route);id++; callbacks[id] = cb;var sg = Protocol.encode(id,route,msg);socket.send(sg);
};

例如:同网关服务器建立连接后 ,向其发送查询前端服务器入口的请求。

/*** 连接gate服务器* 客户端首先要给gate服务器查询一个connector服务器,gate给其回复一个connector的地址及端口号* */
function queryEntry(data, callback){const config = {host:"127.0.0.1", port:3014, log:true};pomelo.init(config, function(socket){const route = "gate.gateHandler.queryEntry";pomelo.request(route, data, function(msg){pomelo.disconnect();if(!msg){msg = {code:500, msg:"error"};}callback(msg);});});
}

主动断开连接

pomelo.disconnect();

disconnect()方法用于Pomelo主动断开连接

pomelo.disconnect = function() {if(socket) {socket.disconnect();socket = null;}
};

从EventEmmiter继承过来的方法

on()方法用于从EventEmmiter继承过来,用来对服务端的推送做出响应。route用户可以自定义,格式一般为onXXX

pomelo.on(route, cb);
EventEmitter.prototype.on = EventEmitter.prototype.addListener;

例如:

//消息监听
pomelo.on("disconnect", function(msg){console.log("disconnect", msg);
});

Pomelo Client相关推荐

  1. pomelo客户端开发

    使用pomelo做服务端开发时,无论什么客户端,只要能遵循与服务端的线上协议,就能够与服务端建立通信.pomelo内建提供的sioconnector和hybridconnector都定义了自己的协议格 ...

  2. 自己构建pomelo的Cocos2d-iPhone Client

    首先.从github上把pomelo-ios Client (https://github.com/NetEase/pomelo-iosclient)下载下来,并且将其依赖的第三方库socket.io ...

  3. pomelo mysql_pomelo连接mySQL

    准备工作: 已安装mysql 的windows版本 先安装依赖库 npm install mysql npm install generic-pool 创建文件: 250bede596931142be ...

  4. [原]pomelo开发环境搭建

    pomelo基于nodejs服务器开源框架,比较牛逼的! 1.安装nodejs(官网下载地址) 安装python等 具体见官网说明 2.安装pomelo(见官方步骤)或者 http://blog.cs ...

  5. FMS4.5 (Flash media server)视频服务器安装和配置以及pomelo聊天室的调用

    CentOS 6.2安装Flash Media Server 4.5 简而言之,Adobe的FMS是一个多媒体应用平台,在这个平台上,可以实现多媒体流的点播.直播.交互等多种应用,由于Adobe公司在 ...

  6. pomelo mysql_pomelo链接mysql

    需求:玩家购买物品够添加到数据库中,以保存数据 准备工作: 已安装mysql 的windows版本 先安装依赖库 npm install mysql npm install generic-pool ...

  7. Pomelo 使用教程

    继"Hello World"之后,我们参照官方文档,以一个"Chat"为例进一步学习Pomelo的使用.在本文中,将会涵盖筛选器.路由及消息压缩.RPC调用.组 ...

  8. pomelo mysql_pomelo中使用mysql

    声明:本人纯服务器开发新手菜鸟,分析的不一定正确,分析的也没啥技术含量,主要是mysql的使用比较分散,集中到一起给新手看着省事,也可能会误导大家,自己小心点. 准备工作: 1.先创建mysql.js ...

  9. Pomelo Connection

    连接组件connection connection连接组件是一个功能相对简单的组件,仅被前端服务器加载,为connectionService连接服务提供一个组件包装. connection连接组件主要 ...

最新文章

  1. 2021学科排名:中国12个工科世界第一,网友:全是不吃香的
  2. Array.splice()--删除数组中重复的数据
  3. 判断一个变量是不是指针
  4. 【分布式】Zookeeper请求处理
  5. linux下安装nvm进行node的版本的快速切换
  6. 解决域中打印机不能共享打印的问题
  7. AI 换脸?除了 ZAO,用 Python 一样轻松搞定
  8. 中如何构造有参和无惨_导数中构造函数的神力你应该借助一下
  9. 09_用户登录退出实现
  10. 孙鑫老师的帮助文档 MSDN Library 2001January 下载地址
  11. 数据治理之IT系统存量信息梳理
  12. 计算机D盘无法读取,D盘目录或文件已损坏,无法读取解决方案
  13. 关键字深度剖析,集齐所有关键字可召唤神龙?【完】
  14. Fleck说明文档翻译
  15. 计算机中文字体的独创性,计算机中文字体中单字的著作权保护研究(2)
  16. 第十一次 作业 视图的应用
  17. 畸变校正与极线校正(具体原理+Matlab代码)
  18. 一维数据二维化的办法汇总(二)
  19. app推广必备功能:分享到,更多应用,创建快捷方式
  20. 来讲讲新生代剪辑工具,人工智能视频剪辑软件王者剪辑

热门文章

  1. 欧洲语言测试A1到C2,德语欧标:学到A1水平是什么样的程度?
  2. 海底捞涨价,我是捞不动了
  3. 南邮 OJ 1596 日历
  4. osx平台电子取证仿真实验
  5. 传奇架设超详细图文教程——GOM引擎
  6. arduino 操作stm32
  7. 百度输入法重大BUG:内存占用随用户词库增大而暴涨
  8. 矩阵求逆,矩阵转置,矩阵相乘
  9. java:浏览器下载excel模板
  10. Chrome插件开发、脚本开发笔记