一、通信类
-------------------------------------
目前Pomelo服务器提供两类connector:sioconnector和hybridconnector,分别对于基于socket.io和二进制的通信。
1.1 sioconnector
支持基于socket.io的通信协议,也是Pomelo框架默认采用的connector(主要是兼容老版本)。以前基于socket.io的服务器和客户端代码不用修改就可使用(默认使用)。
1.2 hybridconnector
支持socket和websocket,使用二进制通信协议,而且支持route字典压缩和protobuf压缩的connector,须要在app.js中显式配置。
-------------------------------------
二、通方式类
-------------------------------------
pomelo的客户端和服务器之间的通信能够分为三种:
request-response
pomelo中最经常使用的就是request-response模式,客户端发送请求,服务器异步响应。客户端的请求发送形式相似ajax相似:
pomelo.request(url, msg, function(data){});
第一个参数为请求地址,完整的请求地址主要包括三个部分:服务器类型、服务端相应的文件名及对应的方法名。第二个参数是消息体,消息体为json格式,第三个参数是回
调函数,请求的响应将会把结果置入这个回调函数中返回给客户端。
notify
notify与request—response相似,惟一区别是客户端只负责发送消息到服务器,客户端不接收服务器的消息响应。
pomelo.notify(url, msg);
push
push则是服务器主动向客户端进行消息推送,客户端根据路由信息进行消息区分,转发到后。一般游戏服务器都会发送大量的这类广播。
pomelo.on(route, function(data){});
以上是javascript的api, 其它客户端的API基本与这个类型。因为API与ajax极其相似,全部web应用的开发者对此都不陌生。
-------------------------------------
三、会话机制Session
-------------------------------------
SessionService 是只存在于前端服务器(frontend),session 以每一个客户端请求自增1的形式生成 ,用于管理链接 pomelo的客户端,若是在前端服务器不进行相关控制对于每一个请求都会产生一个Session,就是说客户端都会在前端的服务器(frontend)里的sessionService产生一个会话,值得注意的是自pomelo0.4.x支持了支持同一帐号多处登陆,因此seesionService 里面的session 对应的是一个session数组,若是,对session不作任何处理的话,没刷新一次页面,都会对这个session 数组自增 1.从暴露的api,咱们能够看出,这个SessionService 能够用于对链接在前端服务器的客户端,踢下线,或者利用session id 直接在前端服务器发消息给客户端。
LocalSessionService 因为SessionService只存在于前端服务器(frontend),若是想在后端服务器(Backend)操做SessionService的话,就须要一个代理类(由于这是两个进程),从源码中能够看到,这个就是从前端服务器复制出来用于backend进行操做的SessionService,主要用于获取踢客户端下线,或者获取相关客户端Session Id。
LocalSession 是用于咱们自定义的id 与全局 sessionService进行管理的类。主要用于服务端对客户端之间会话的管理。
从api 文档暴露的接口咱们能够得知主要做用:
让咱们自定义的id 能够绑定到客户端与服务端之间的会话,用于管理客户端的状态。例如,利用绑定的id实现控制对客户端进行踢掉,监听session的关闭事件。
localSession 还提供了一个K/V 的数据存取操做 须要用push或者pushAll 对sessionSerive进行更新。可是,根据官方的回复,不建议把session当作内存库。
通常状况下session在connector里面赋值,供他服务器使用,后端服务器session为localsession
-------------------------------------
四、handler接口
-------------------------------------
handler接口固定:function(msg,session,next)
msg为客户端要传递的参数,格式为json
session由pomelo自动传递
next(null,{route:msg.route}),null表明错误信息,没错误信息,就返回null
-------------------------------------
五、remote接口
-------------------------------------
remote接口不固定用于服务器之间通讯
-------------------------------------
javascript