Skip to content
This repository has been archived by the owner on Sep 25, 2023. It is now read-only.

Pomelo使用参考手册

dsqlsd edited this page Aug 13, 2014 · 8 revisions

基本使用

rpc调用方法

handler调用

session绑定

消息回复(next调用)

消息发送(channelservice的使用)

增加不同类型的服务器

protobuf使用

字典压缩使用

组件功能及配置说明

connector

connector

encode

decode

useCrypto

blacklistFun

useDict

useProtobuf

ssl

disconnectOnTimeout

四种connector分别对应的参数

pushScheduler

scheduler

selector

proxy

router

bufferMsg|cacheMsg

interval

router

rpcDebugLog

remote

router

bufferMsg|cacheMsg

interval

rpcDebugLog

插件功能及配置说明

pomelo-globalchannel-plugin

pomelo-zookeeper-plugin

pomelo-masterha-plugin

pomelo-status-plugin

pomelo-scale-plugin

pomelo-sync-plugin

pomelo-data-plugin

pomelo-protobuf-plugin

基本依赖库说明

pomelo-admin

pomelo-logger

pomelo-rpc

pomelo-loader

pomelo-monitor

pomelo-protocol

pomelo-zmq-rpc

pomelo-admin-web

客户端使用

Js客户端(socket.io&websocket)

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

socket.io的客户端开发库

对于使用socket.io的客户端SDK来说,其依赖socket.io-client, 需要在引入pomelo-client.js之前引入socket.io-client.js文件.

  <script src="$PATH/socket.io-client.js"></script>
	<script src="$PATH/pomelo-client.js"></script>

或者可以使用bower来进行管理.

  bower install pomelo-jsclient-socket.io

注意:关于低版本IE浏览器(如IE6,7,8),因为浏览器并不支持Uint16Array对象,所以无法使用pomelo-protocol.可以直接使用JSON进行通讯. 需要使用pomelo-jsclient-socket.io中的pomelo-client-ie.js

  <script src="$PATH/socket.io-client.js"></script>
	<script src="$PATH/pomelo-client-ie.js"></script>

另外还需要修改game-server/app.js文件

	var encode = function(reqId, route, msg) {
      if (!!reqId) {
          return{
              id: reqId,
              body: msg
          };
      } else {
          var m = {
              route: route,
              body: msg
          };
          return JSON.stringify(m);
      }
  };

  var decode = function(data) {
      data = JSON.parse(data);
      return {
          id: data.id,
          route: data.route,
          body: data.msg
      };
  };

  app.configure('production|development', 'connector|gate', function() {
      app.set('connectorConfig', {
          connector: pomelo.connectors.sioconnector,
          encode: encode,
          decode: decode
      });
  });

##IE5 6 7不支持JSON.stringify()方法的解决方法 <**>IE5 6 7不支持JSON.stringify()方法,可以引入json2.js这个文件,json2.js提供了json的序列化和反序列化方法,可以将一个 json对象转换成json字符串,也可以将一个json字符串转换成一个json对象。json2.js下载可以查找一下百度,不太会上传,呵呵。

##IE8和以下客户端pomelo.init初始化的时候值为‘undefined’的解决办法 在IE8和以下客户端pomelo.init初始化的时候值为‘undefined’,找到了一个解决的办法,就是在最前面不引用“var pomelo = window.pomelo;”这条语句,经测试IE5 6 7 8和其他浏览器,都通过,不报错,编程学得太烂,只找到了方法,不知道原理。

websocket的客户端开发库

对于使用websocket的客户端SDK来说,可直接引入pomelo-jsclient-websocket中的pomelo-client.js文件即可

	<script src="$PATH/pomelo-client.js"></script>

或者可以使用bower来进行管理.

  bower install pomelo-jsclient-websocket

web端API简介

无论是socket.io的还是websocket的,都提供了统一的API,下面对这些API进行简单的介绍。

pomelo.init(params, cb)

//example
pomelo.init({
  host: host,
  port: port
}, function() {
  //callback
});

这是往往是客户端的第一次调用,params中应该指出要连接的服务器的ip和端口号,cb会在连接成功后进行回调;

pomelo.request(route, msg, cb)

//example
pomelo.request(route, {
  rid: rid
}, function(data) {  
  console.log(data);   
});

请求服务,route为服务端的路由,格式为"ServerType.HandlerName.MethodName", msg为请求的内容,cb会响应回来后的回调;

pomelo.notify(route, msg)

发送notify,不需要服务器回响应的,因此没有对响应的回调,其他参数含义同request;

pomelo.on(route, cb)

这个是从EventEmmiter继承过来的方法,用来对服务端的推送作出响应的。route会用户自定义的,格式一般为"onXXX";

pomelo.disconnect()

这个是pomelo主动断开连接的方法。

libpomelo客户端

cocos2d-js客户端

android-socket.io客户端

unity3d客户端

命令行

普通命令行

交互式命令行

Filter&Module的配置和使用

全局Filter

服务器filter

Module

配置文件

servers.json

log4js.json

其它

定时任务

生命周期回调

普通filter&全局filter

热更新

服务器连接认证机制

ssl支持

按环境目录配置

rpc调用方式

Transcation支持

Clone this wiki locally