Proxy - KBEngine base 文档

KBEngine

KBEngine

Proxy类

[KBEngine模块]

Proxy是KBEngine模块的一部分。 更多...

import KBEngine

父类

Base

成员函数

def disconnect( self ):
def getClientType( self ):
def getClientDatas( self ):
def giveClientTo( self, proxy ):
def streamFileToClient( self, resourceName, desc="", id=-1 ):
def streamStringToClient( self, data, desc="", id=-1 ):

回调函数

def onClientDeath( self ):
def onClientGetCell( self ):
def onEntitiesEnabled( self ):
def onGiveClientToFailure( self ):
def onLogOnAttempt( self, ip, port, password ):
def onStreamComplete( self, id, success ):

属性

__ACCOUNT_NAME__  只读 string
__ACCOUNT_PASSWORD__  只读 string
clientAddr  只读
entitiesEnabled  只读 bool
hasClient  只读 bool
roundTripTime  只读
timeSinceHeardFromClient  只读

详细描述

ProxyBase的一个特殊类型,它继承自Base,它有一个关联的客户端。本身来说, 它就是一个代理客户端的实体,操控所有服务端向客户端的更新。不能在脚本直接创建Proxy类对象。

成员函数文档

def disconnect( self ):

断开客户端连接。

def getClientType( self ):

功能说明:

这个函数返回客户端类型。

返回:

UNKNOWN_CLIENT_COMPONENT_TYPE = 0,
CLIENT_TYPE_MOBILE = 1, // 手机类
CLIENT_TYPE_WIN = 2, // pc, 一般都是exe客户端
CLIENT_TYPE_LINUX = 3 // Linux Application program
CLIENT_TYPE_MAC = 4 // Mac Application program
CLIENT_TYPE_BROWSER = 5, // web应用, html5,flash
CLIENT_TYPE_BOTS = 6, // bots
CLIENT_TYPE_MINI = 7, // Mini-Client
CLIENT_TYPE_END = 8 // end

def getClientDatas( self ):

功能说明:

这个函数返回客户端登录时和注册时所附带的数据。
此数据可用于运营系统扩展,如果连接了第三方账号服务,此数据会经过interfaces进程发往第三方服务系统。

返回:

tuple, 固定为2个元素的tuple(登陆数据bytes,注册数据bytes),第一个元素为登陆时客户端调用登陆时传入的datas参数, 第二个元素为注册时客户端调用注册所传入的datas参数。由于可以存储任意二进制数据,因此他们都是以bytes类型存在。

def giveClientTo( self, proxy ):

功能说明:

将客户端的控制器转交给另一个Proxy,当前的Proxy必须有一个客户端而目标Proxy则必须没有关联客户端,否则将会提示错误。

参看:

Proxy.onGiveClientToFailure

参数:

proxy 控制权将转交给这个实体。

def streamFileToClient( self, resourceName, desc="", id=-1 ):

功能说明:

这个函数类似于streamStringToClient(),将一个资源文件发送给客户端。发送过程在不同的线程上操作,因此不会危及主线程。

参看:

Proxy.onStreamComplete

参数:

resourceName 要发送的资源名称,包含路径。
desc 一个可选的字符串,发送给客户端的资源描述。
id 一个16位的id,它的值完全取决于调用者。如果传入-1系统将会在队列里面选择一个没有在用的id。可以在客户端根据这个id做资源判断。

返回:

与这个下载关联的id。

def streamStringToClient( self, data, desc="", id=-1 ):

功能说明:

发送一些数据到当前实体绑定的客户端。如果客户端端口则数据被清除, 当客户端再次绑定到实体的时候才可调用这个函数。16位的id完全取决于调用者。
如果调用者没有指定这个ID则系统会分配一个未用过的id。可以在客户端根据这个id做资源判断。

你可以在Proxy的派生类中定义回调函数(onStreamComplete),所有数据成功发送给客户端时或下载失败时会调用这个回调函数。

参看:Proxy.onStreamComplete与客户端实体Entity.onStreamDataStartedEntity.onStreamDataRecv还有Entity.onStreamDataCompleted

参数:

data 要发送的字符串。
desc 一个可选的字符串,发送给客户端的描述。
id 一个16位的id,它的值完全取决于调用者。如果传入-1系统将会在队列里面选择一个没有在用的id。

返回:

与这个下载关联的id。


回调函数文档

def onClientDeath( self ):

如果在脚本中实现了此回调,这个方法将在客户端断开连接时被调用。 这个方法没有参数。

def onClientGetCell( self ):

如果在脚本中实现了此回调,当客户端能够调用实体的cell属性时,该回调被调用。

def onEntitiesEnabled( self ):

如果在脚本中实现了此回调,当实体可用时( 各种初始化完毕并且可以与客户端通讯 )该回调被调用。 这个方法没有参数。
注意:giveClientTo将控制权赋给了该实体时也会导致该回调被调用。

def onGiveClientToFailure( self ):

如果在脚本中实现了此回调,当实体调用giveClientTo失败时,该回调被调用。这个方法没有参数。

def onLogOnAttempt( self, ip, port, password ):

如果在脚本中实现了此回调,这个函数在客户端尝试使用当前账号实体进行登录时触发回调。
这种情况通常是实体存在于内存中处于有效状态,最明显的例子是用户A使用此账号登录了,用户B使用同一账号进行登录,此时回调触发。

这个回调函数可以返回如下常量值:
KBEngine.LOG_ON_ACCEPT:允许新的客户端与实体进行绑定,如果实体已经绑定了一个客户端,之前的客户端将被踢出。
KBEngine.LOG_ON_REJECT:拒绝新的客户端与实体绑定。
KBEngine.LOG_ON_WAIT_FOR_DESTROY:等待实体销毁后再进行客户端绑定。

参数:

ip 尝试登录的客户端IP地址。
port 尝试登录的客户端连接的端口。
password 用户登录时使用的MD5密码。

def onStreamComplete( self, id, success ):

如果在脚本中实现了此回调,当用户使用Proxy.streamStringToClient()或Proxy.streamFileToClient()完成时,该回调被调用。

参数:

id 与下载关联的id。
success 成功与否。


属性文档

__ACCOUNT_NAME__

说明:

如果proxy是帐号则可以访问__ACCOUNT_NAME__得到帐号名。

__ACCOUNT_PASSWORD__

说明:

如果proxy是帐号则可以访问__ACCOUNT_PASSWORD__得到帐号MD5密码。

clientAddr

这是一个tuple对象,包含了客户端的ip与端口。

entitiesEnabled

实体是否已经可用。在实体可用之前脚本不能与客户端进行通讯。

hasClient

Proxy是否绑定了一个客户端连接。

roundTripTime

在一段时间内服务器与这个Proxy绑定的客户端通讯平均往返时间。这个属性只在Linux下生效。

timeSinceHeardFromClient

最后一次收到客户端数据包时到目前为止所过去的时间(秒)。