1. 程式人生 > >pomelo rpc調用出錯的解決

pomelo rpc調用出錯的解決


adminServer.json 沒有設定伺服器型別的token
    "type": "game",

    "token": "xxxxxxxxxxxxxx"

出現下面的錯誤

[2016-06-05 16:34:35.620] [ERROR] console -  Caught exception: TypeError: Cannot read property 'game' of undefined
    at Handler.entry (D:\project\gameBilliards\game-server\app\servers\connector\handler\entryHandler.js:20:17)
    at Service.handle (D:\project\gameBilliards\game-server\node_modules\pomelo\lib\common\service\handlerService.js:38:30)
    at handle (D:\project\gameBilliards\game-server\node_modules\pomelo\lib\server\server.js:370:25)
    at next (D:\project\gameBilliards\game-server\node_modules\pomelo\lib\common\service\filterService.js:50:7)
    at Filter.before (D:\project\gameBilliards\game-server\node_modules\pomelo\lib\filters\handler\timeout.js:34:3)
    at next (D:\project\gameBilliards\game-server\node_modules\pomelo\lib\common\service\filterService.js:58:15)
    at Service.beforeFilter (D:\project\gameBilliards\game-server\node_modules\pomelo\lib\common\service\filterService.js:65:3)
    at beforeFilter (D:\project\gameBilliards\game-server\node_modules\pomelo\lib\server\server.js:242:8)
    at doHandle (D:\project\gameBilliards\game-server\node_modules\pomelo\lib\server\server.js:383:3)

    at dispatch (D:\project\gameBilliards\game-server\node_modules\pomelo\lib\server\server.js:107:7)

rpc呼叫如果沒有傳遞session,會出現下面的錯誤

    self.app.rpc.game.gameRemote.add(1,2, "test", 3, function(v1,v2,v3)

 request "connector.entryHandler.entry" timeout.
[2016-06-05 16:38:37.891] [ERROR] pomelo-rpc - [D:\project\gameBilliards\game-server\node_modules\pomelo\node_modules\pomelo-rpc\lib\rpc-server\acceptors\ws-acceptor.js] 
rpc server process message error: "TypeError: undefined is not a function\n    at gameRemote.add 
(D:\\project\\gameBilliards\\game-server\\app\\servers\\game\\remote\\gameRemote.js:14:5)\n    at pro.route 
(D:\\project\\gameBilliards\\game-server\\node_modules\\pomelo\\node_modules\\pomelo-rpc\\lib\\rpc-server\\dispatcher.js:51:10)\n   
 at D:\\project\\gameBilliards\\game-server\\node_modules\\pomelo\\node_modules\\pomelo-rpc\\lib\\rpc-server\\gateway.js:23:16\n

正確的如下

Handler.prototype.entry = function(msg, session, next) {
    var self=this;
    self.app.rpc.game.gameRemote.add(session,1,2, "test", 3, function(v1,v2,v3)

全套creator html5 + nodejs pomelo express 實踐開發,喜歡交流的加扣扣群427719099,歡迎入坑