pomelo之rpc坑

在使用pomelo的RPC功能时,由于不清楚它的尿性,最后的回调没有传入,导致一个问题

服务器上总是有

rpc request timeout

rpc callback timeout

的错误输出。但是却不影响业务,于是去代码里面搜索

在mailbox那个文件中有这个输出

原因是在每个rpc调用的时候会设置一个callback的timeout。

若是在这个timeout内没有调用callback,则会产生如上输出

后来果断在rpc中将callback传入,整个世界清静了。

另外说一句,官方的chat示例中就有这个错误的示例。它在调用kick的时候callback传入的Null,不出意外的,一会以后它的输出也是rpc timeout….

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-23 05:11:07

pomelo之rpc坑的相关文章

pomelo研究笔记-RPC客户端

1. mailbox数据收发模块 一个RPC客户端可能同时需要调用多个远端(server)提供的服务,在pomelo里每个server抽象为一个mailbox.先来看看mailbox的实现: var MailBox = function(server, opts) { EventEmitter.call(this); this.curId = 1; this.id = server.id; this.host = server.host; this.port = server.port; thi

给Pomelo的聊天室添加time的RPC调用

为了练手,给聊天应用增加一个rpc调用和一个time类型的服务器,在servers/time/remote/timeRemote.js中,添加如下代码: module.exports.getCurrentTime = function (arg1, arg2, cb) { console.log("timeRemote - arg1: " + arg1+ "; " + "arg2: " + arg2); var d = new Date(); v

pomelo服务器集群中集成http服务器

项目接近尾声,这个周在弄运维相关的一些东西. 运维部门需要一个http服务器,来查询服务器及玩家的一些数据. 在做的过程中考虑的是两个问题: 1 这个http服务器挂在什么地方? 为了不污染pemelo的代码,做了一个httpServer的组件,在gate服务器中加载. 因为其他服务器可能有多个,这样会重复加载httpServer组件,导致端口重复监听. 2 多个area服务器,如何确定rpc调用的路由? pomelo默认的路由格则如下: // game-server/node_modules/

pomelo学习笔记

一 连接流程 client到gate服务器获取connector服务器的ip和port: 二 通讯类型 client和server通讯分三种: 1 request - response 客户端发送请求, 服务器异步响应. 方法: pomelo.request(url, msg, callback); 参数: url: 请求地址, 完整地址三个部分: 服务器类型. 服务端相应的文件名及对应的方法名. msg: 消息体, 消息体为json格式. callback: 回调函数, 形如function(

安装Pomelo 时遇到的坑

一.Pomelo相关的代码地址 https://github.com/NetEase,这里面包含比较多的项目. 2. https://github.com/NetEase/pomelo/wiki/%E5%AE%89%E8%A3%85pomelo, 是中文的安装步骤. 二.安装Pomelo需要的环境支持 NodeJS(最新的版本没用V0.12.0,我使用的版本是V0.10.35,这个比较重要不然报一些莫名其妙的错误) C++编译环境(直接安装VS2010) Python(3.0以下,我使用的是2.

移动端点击事件全攻略,有你知道与不知道的各种坑

看标题的时候你可能会想,点击事件有什么好说的,还写一篇攻略?哈哈,如果你这么想,只能说明你too young to simple. 接触过移动端开发的同学可能都会面临点击事件的第一个问题:click事件的300ms延迟响应.不能立即响应给体验造成了很大的困扰,因此解决这个问题就成为了必然. 这个问题的解决方案就是: zepto.js的tap事件.tap事件可以理解为在移动端的click事件,而zepto.js因为几乎完全复制jQuery的api,因此常常被用在h5的开发上用来取代jquery.

Netty中的那些坑

Netty中的那些坑(上篇) 最近开发了一个纯异步的redis客户端,算是比较深入的使用了一把netty.在使用过程中一边优化,一边解决各种坑.儿这些坑大部分基本上是Netty4对Netty3的改进部分引起的. 注:这里说的坑不是说netty不好,只是如果这些地方不注意,或者不去看netty的代码,就有可能掉进去了. 坑1: Netty 4的线程模型转变 在Netty 3的时候,upstream是在IO线程里执行的,而downstream是在业务线程里执行的.比如netty从网络读取一个包传递给

读pomelo的教程-2

下面从头到尾记录chat demo的Login的过程 client:点击login按钮,取得username和rid两个值 $("#login").click(function() { username = $("#loginUser").attr("value"); rid = $('#channelList').val(); 之后对username和rid验证 client:连接gate服务器 pomelo.init({ host: host

Pomelo的Router

在pomelo中,对服务器的扩充非常简单,只需要修改一下配置文件config/servers.json,多添几台服务器配置就行了,如果我们的connector和chat都具有多台服务器,因此需要考虑对用户请求的服务器分配问题 1.对于gate服务器来说,由于有多个connector,所以需要从中选择一个服务器的信息进行返回,这里我们增加了一个工具函数dispatch,它完成具体的分配运算,他使用用户的uid的crc32的校验码与connector服务器的个数取余,从而得到一个connector服