SmartFoxServer学习笔记3——一个简单例子

该例将数组中的所有元素乘以2后返回结果。

整个过程分为3步:

1. 客户向服务端端发送请求

2. 服务端接收请求,处理后返回给客户端

3. 客户端接收并处理服务端响应

 

客户端代码:

var extensionName:String = "simpleExt"
function sendValues()
{
        var obj:Object = {}
        obj.values = [100, 200, 300, 400, 500]
       
        smartfox.sendXtMessage(extensionName, "double", obj, "xml") //调用扩展
        
        output_txt.text += "Sent: " + obj.values + newline
}

sendXtMessage() 包含四个参数:

extName 扩展名称,必须和config.xml中所定义的相同,这里是extensionName("simpleExt")
cmd 服务端扩展所执行的命令名称,这里是"double"
params 传给服务端的数据,可以是strings, numbers, booleans, arrays, objects,这里是obj
type 可以是"xml"或"str",表示发送请求的格式,默认为"xml" 。选择"str"时,客户端以字符串发送请求,可以减少占用带宽,十分适合用于即时性要求很强的游戏交互。

 

服务端:

function init()
{
        // Using trace will send data to the server console and Administrator Tool
        trace("Hello from the Simple Extension Example!")
}

function destroy()
{
        trace("Bye bye!")
}

//主要代码
function handleRequest(cmd, params, user, fromRoom)
{
        //检查传入命令名称      
        if (cmd == "double")
        {

                //初始化一个空数组对象,用来存储服务器返回值
                var response = {}
                //用命令名称创建_cmd属性,用来辨别服务器做出相应的命令
                response._cmd = "double"
                response.values = []
               

                //遍历传入的数组,将每个值乘以2后放入response数组
                for (var i = 0; i < params.values.length; i++)
                {
                        var n = params.values[i]
                        response.values[i] = n * 2
                }


                //将结果返回客户端
                _server.sendResponse(response, -1, null, [user])
        }
}

function handleInternalEvent(evt)
{
        // Simply print the name of the event that was received
        trace("Event received: " + evt.name)
}

 _server.sendResponse()包含5个参数:

response 具有_cmd属性的对象
fromRoom 返回消息的RoomID (-1 if not needed)
sender 发送消息的客户端对象 (null if not needed)
recipients 

接收消息的用户list

type can be "xml" or "str". It represent the message format. By default "xml" is used

 

回到客户端,接收服务器响应:

smartfox.onExtensionResponse = function(resObj:Object, type:String)
{
        trace("cmd: " + resObj._cmd)
        trace("type: " + type)
       
        // We expect the response to be xml formatted
        if (type == "xml")
        {
                // Let's check if it's a "getData" message
                if (resObj._cmd == "double")
                {
                        trace("res: " + resObj.values)
                        output_txt.text += "Received: " + resObj.values + newline
                }
        }
}
resObj包含服务器返回数据,type是数据传送格式。当type和resObj的_cmd属性正确时,将结果输出到屏幕。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值