交互的结果返回给引擎baseapp层层,通过KBEngine.accountLoginResponse能够将信息推送到baseapp层。 3:充值计费 当baseapp上请求计费entity.charge()后,请求会由loginapp转发到dbmgr,如果dbmgr挂接了interfaces,则dbmgr将请求转发至这里(KBEngine.onRequestCharge) 此时脚本收到这个请求之后可以使用各种方式与第三方平台通信,可以使用python的http库也能直接使用socket,当与第三方平台交互完毕之后应该将 交互的结果返回给引擎baseapp层,通过KBEngine.chargeResponse能够将信息推送到baseapp层entity.charge时给入的回调或者回调到onLoseChargeCB接口。 某些平台要求客户端直接与平台请求计费,平台采用回调服务器的方式来完成请求, 参考“平台回调”。 4: 平台回调 要完成此功能应该在脚本层创建一个socket, 并将socket挂接到KBEngine中(这样可防止阻塞导致主线程卡),然后监听指定的端口。 使用KBE的KBEngine.registerReadFileDescriptor()和KBEngine.registerWriteFileDescriptor(),具体查看API文档与Poller.py。 """ g_poller = Poller() def onInterfaceAppReady(): """ KBEngine method. interfaces已经准备好了 """ INFO_MSG('onInterfaceAppReady: bootstrapGroupIndex=%s, bootstrapGlobalIndex=%s' % \ (os.getenv("KBE_BOOTIDX_GROUP"), os.getenv("KBE_BOOTIDX_GLOBAL"))) #KBEngine.addTimer(0.01, 1.0, onTick) g_poller.start("localhost", 30040) def onTick(timerID):
def run(self): poller = Poller(self.args.port, self.args.debug) poller.run()