cocos-lua的websocket简单叙述

WebSocket是html5新增的一种通信协议,目前流行的浏览器都会支持。
在cocos中的WebProxyTest.lua存在简单的websocket的使用方法,下面我就按照这个简单记录下,之后有会继续完善:

C++的文件存在引擎目录 /samples/TestCpp/C;asses/ExtensionsTest/NetworkTest/WebSocketTest.cpp文件

C++ cocos2d::network::WebSocket::Delegate定义使用WebSocket需要监听的回调通知接口。使用WebSocket的类,就需要puhlic继承Delegate。

写法:class WebSocketTestLayer : public cocos2d::Layer,public cocos2d::network::WebSocket::Delegate{}


接下来lua书写简单的WebSocket:

  -- WebSocket.org 提供的测试服务器 ws://echo.websocket.org

  local wsSendText   = cc.WebSocket:create("ws://echo.websocket.org")

   -- 触发WebSocket的链接服务区成功后WebSocket就会调用onOpen,通知客户的和服务器的已经成功的建立了链接通道。
   local function wsSendTextOpen(strData)
        print("wsSendTextOpen")
    end

    -- 服务器向客户端发送的数据(在当前的测试环境服务器下,服务器会把前端发送的数据转发回到客户端)
    local function wsSendTextMessage(strData)
        print("wsSendTextMessage:"..strData)
    end

    -- 不管是前端还是服务器关闭了WebSocket都会收到该回调,所以把wsSendText置空
    local function wsSendTextClose(strData)
        print("_wsiSendText websocket instance closed.")
        wsSendText = nil
    end

    -- 客户端请求错误的时候回调,可更具不同的错误码进行相应的处理
    local function wsSendTextError(strData)
        print("sendText Error was fired")
    end

    -- 注册回调以上的函数
    if nil ~= wsSendText then
        wsSendText:registerScriptHandler(wsSendTextOpen,cc.WEBSOCKET_OPEN)
        wsSendText:registerScriptHandler(wsSendTextMessage,cc.WEBSOCKET_MESSAGE)
        wsSendText:registerScriptHandler(wsSendTextClose,cc.WEBSOCKET_CLOSE)
        wsSendText:registerScriptHandler(wsSendTextError,cc.WEBSOCKET_ERROR)
    end

--  测试发送
    function self:TestSendMsg( )
        if wsSendText then
            local data = {}
            data.type = 1
            data.ID = "2028"
            data.Name = "牛彩瓷"
            local strData = json.encode(data)

            wsSendText:sendString(strData)
        end
    end


在lua中的send是不区分二进制和文本模式的统一使用 sendString();

在C++中:

文本模式:

_wsSend->send("Hello WebSocket");

二进制模式:

// 参数 二机制数据,和长度

_wsSend->send( (unsigned char*)buf,sizeof(buf) );


猜你喜欢

转载自blog.csdn.net/erweimac/article/details/79754715