JGSL_clientproxy
client proxy for server communicating with client
Title |
client proxy for server communicating with client |
Author(s) |
LiXizhi |
Date |
2008/12/25 |
File |
script/kids/3DMapSystemNetwork/JGSL_clientproxy.lua |
Description
Sample Code
NPL.load("(gl)script/kids/3DMapSystemNetwork/JGSL_clientproxy.lua");
local proxy = Map3DSystem.JGSL.ClientProxy:new({DefaultFile="your_client_neuron_filename.lua"});
Member Functions
ClientProxy:new
proxy status
local proxystate = {
-- proxy is reset
none = nil,
-- waiting for server response
waiting = 1,
-- server already responded, the client can send message at anytime
ready = 2,
}
------------------------------------
a server proxy is used by client to communicate with a epoll server.
------------------------------------
local ClientProxy = {
-- nil means we are ready to send a packet.
state = proxystate.none,
-- the last time the client sends message to a server proxy, this is measured by the local clock.
LastSendTime,
-- the last time the client receives message from the server, this is measured by the local clock.
LastReceiveTime,
-- default neuron file
DefaultFile = "script/kids/3DMapSystemNetwork/JGSL_client.lua",
-- proxy role
UserRole = "guest",
-- JID
jid,
-- the jabber client to use. if nil, JGSL.GetJC() is used.
jc,
-- whether we have signed in to the server and has its session key in cookies,
SignedIn,
-- cookies: nil or a table containing name value pairs, such as {sk="sessionkeyhere"}
cookies,
-- default server timeout time
-- usually if the server is not responding in 20 seconds, we will report to user about connecion lost or unsuccessful.
ServerTimeOut = 20000,
}
ClientProxy =
ClientProxy;
syntax
function ClientProxy:new (o)
parameters
ClientProxy:Reset
it will send CS_Logout if old connection contains cookies
syntax
function ClientProxy:Reset()
ClientProxy:Send
send a message to server using this proxy.
- param msg : msg to send
- param neuronfile : if nil, self.DefaultFile is used.
syntax
function ClientProxy:Send(jid, msg, neuronfile)
parameters
jid |
|
msg |
msg to send |
neuronfile |
|
ClientProxy:OnRespond
call this function whenever the proxy has a response from the server.
it makes the proxy ready to send another message.
syntax
function ClientProxy:OnRespond()
ClientProxy:UpdateSessionKey
update session key
- param bInsertToCookie : if true, it will insert sk to cookies, so that sk will be sent along with all subsequent Send calls.
syntax
function ClientProxy:UpdateSessionKey(sk)
parameters
ClientProxy:IsReady
whether the proxy is in ready state
ready state means that the proxy is connected and not waiting for response.
syntax
function ClientProxy:IsReady()
ClientProxy:MakeReady
force the proxy to ready state
syntax
function ClientProxy:MakeReady()
ClientProxy:IsKeepAlive
whether deltaTime is passed since the last time that we send message to server.
if return true, we usually need to send a normal update to server to keep the client alive.
- param deltaTime : in milliseconds. usually several times the normal update interval. If nil, self.KeepAliveInterval is used.
syntax
function ClientProxy:IsKeepAlive(deltaTime)
parameters
deltaTime |
in milliseconds. usually several times the normal update interval. If nil, self.KeepAliveInterval is used. |
ClientProxy:IsTimeOut
return true if we are not receiving server response for too long
syntax
function ClientProxy:IsTimeOut()