C++版本
在cocos2d::network::WebSocket::Delegate定义了使用WebScocket需要监听的回调通知接口。需要继承实现这个接口。
WebSocket对象一共支持四个消息 onopen, onmessage, onclose和onerror。
virtual void onOpen(WebSocket* ws) = 0;
当客户端和服务器完成握手连接后,此函数被调用,意味着WebSocket连接准备好了发送数据。
当客户端和WebSocket服务器连接成功后,会触发onOpen消息。ws是所连接的WebSocket对象。
virtual void onMessage(WebSocket* ws, const Data& data) = 0;
当客户端接收到WebSocketServer发送过来的数据时,就会触发onmessage消息。
ws是所连接的WebSocket对象。
data 消息数据。
virtual void onClose(WebSocket* ws) = 0;
当连接的WebSocket对象想要关闭或者协议根本不能使用,并且当前的_readyState是State::CLOSING,这个函数被调用
ws是所连接的WebSocket对象。
virtual void onError(WebSocket* ws, const ErrorCode& error) = 0;
在以下四种情况下此函数被调用:
1、客户端连接失败;
2、客户端的request连接不能与服务器建立handshake
3. 在此调用之后,协议不能使用 ,并且当前_readyState is State::CONNECTING.
4. when a socket descriptor needs to be removed from an external polling array. in is again the struct libwebsocket_pollargs containing the fd member to be removed. If you are using the internal polling loop, you can just ignore it and current _readyState is State::CONNECTING.
ws The WebSocket object connected.
error WebSocket::ErrorCode enum,would be ErrorCode::TIME_OUT or ErrorCode::CONNECTION_FAILURE.
class WebSocketTest : public TestCase, public cocos2d::network::WebSocket::Delegate
WebSocketTest 继承与上述Delegate接口。
重写上述四个函数:
virtual void onOpen(cocos2d::network::WebSocket* ws)override;
virtual void onMessage(cocos2d::network::WebSocket* ws, const cocos2d::network::WebSocket::Data& data)override;
virtual void onClose(cocos2d::network::WebSocket* ws)override;
virtual void onError(cocos2d::network::WebSocket* ws, const cocos2d::network::WebSocket::ErrorCode& error)override;