public void init() { SFUtils.log("正在连接GameServer..."); m_sendQueue = new Queue <SFBaseRequestMessage>(); m_recvQueue = new Queue <string>(); dispatcher = new SFEventDispatcher(this); m_client = new SFTcpClient(); m_ping = -1; m_heartbeatTimer = SFCommonConf.instance.heatbeatInterval; m_client.init(SFCommonConf.instance.serverIp, SFCommonConf.instance.serverPort, onRecvMsg, ret => { if (ret == 0) { SFUtils.log("连接GameServer成功"); } else { SFUtils.logWarning("连接GameServer失败"); } dispatcher.dispatchEvent(SFEvent.EVENT_NETWORK_READY, new SFSimpleEventData(ret)); }); m_client.dispatcher.addEventListener(this, SFEvent.EVENT_NETWORK_INTERRUPTED, e => { dispatcher.dispatchEvent(e); }); dispatcher.addEventListener(this, SFResponseMsgSocketHeartbeat.pName, onHeartbeat); }
void onOk(SFEvent e) { m_view.lblTitle.text = "Button Clicked!"; m_view.btnOk.SetText("修改了button的Text"); var md5 = SFUtils.getMD5("Abcd.1234@BA!"); SFUtils.log(SFUtils.getMD5(md5)); }
void onHeartbeat(SFEvent e) { var now = DateTime.Now; var diff = now.Subtract(m_heartbeatStartTime); m_ping = diff.TotalMilliseconds; SFUtils.log("ping: {0:F2}", m_ping); dispatcher.dispatchEvent(SFEvent.EVENT_NETWORK_PING); }
void onLifeChange(SFEvent e) { var data = e.data as SFUnitLifeChange; if (data.uid == SFUserData.instance.uid) { m_view.proLife.setProgress(1.0f * data.curLife / data.maxLife); SFUtils.log("当前血量{0}/{1}", data.curLife, data.maxLife); } }
public void update(float dt) { // 发送队列 while (m_sendQueue.Count > 0) { SFBaseRequestMessage req = m_sendQueue.Dequeue(); string data = JsonUtility.ToJson(req); m_client.sendData(data); if (req.pid != 0 && req.pid != 3) { SFUtils.log("Sending message[{0}]: {1}", data.Length, data); } } // 接收队列 while (m_recvQueue.Count > 0) { string data = m_recvQueue.Dequeue(); SFBaseResponseMessage obj = null; try { obj = JsonUtility.FromJson <SFBaseResponseMessage>(data); } catch { } if (obj != null) { handleProtocol(obj.pid, data); if (obj.pid != 0 && obj.pid != 3 && obj.pid != 4) { SFUtils.log("收到信息:协议号={0}\ndata={1}", obj.pid, data); } } else { SFUtils.logWarning("不能解析的信息格式:\n" + data); } } // 心跳包 m_heartbeatTimer += dt; if (m_heartbeatTimer > SFCommonConf.instance.heatbeatInterval) { m_heartbeatTimer -= SFCommonConf.instance.heatbeatInterval; sendHeartbeat(); } }
void onSend(SFEvent e) { if (m_mgr.isReady()) { string content = m_view.txtMsg.text; SFUtils.log("正在发送 " + content); SFRequestMsgUnitLogin req = new SFRequestMsgUnitLogin(); req.uid = "abc"; req.loginOrOut = 1; m_mgr.sendMessage(req); } else { m_infoMsg = "服务器未连接"; } }
/// <summary> /// 移除来自某对象的所有监听 /// </summary> /// <param name="target">Target.</param> public void removeAllEventListenersWithTarget(object target) { foreach (var item in m_dictListeners) { var pairs = item.Value; for (int i = pairs.Count - 1; i >= 0; --i) { var pair = pairs[i]; if (pair.listener.GetHashCode() == target.GetHashCode()) { pairs.Remove(pair); } } } SFUtils.log("removeAllEventListenersWithTarget by " + target.ToString()); }
void onRemoteUsers(SFEvent e) { var data = e.data as SFResponseMsgNotifyRemoteUsers; if (data.retCode == 0) { SFBattleData.instance.enterBattle_mapId = data.mapId; SFBattleData.instance.enterBattle_remoteUsers = data.users; SFBattleData.instance.enterBattle_posX = data.posX; SFBattleData.instance.enterBattle_posY = data.posY; SFBattleData.instance.enterBattle_rotation = data.rotation; SFBattleData.instance.enterBattle_maxLife = data.maxLife; SFBattleData.instance.enterBattle_initRunTime = data.runTime; SFUtils.log("玩家初始坐标:({0}, {1}),rot={2}", data.posX, data.posY, data.rotation); } }
/// <summary> /// 关闭TCP客户端 /// </summary> public void uninit() { if (m_socket != null) { if (m_socket.Connected) { m_socket.Disconnect(false); } m_socket.Close(); m_socket = null; } m_isReady = false; long endTime = SFUtils.getTimeStampNow(); float totalTime = endTime - m_startTime; if (totalTime < 1) { totalTime = 1; } SFUtils.log("共发送{0:F2} KB, 共接收{0:F2} KB", totalSendLength / 1024.0, totalRecvLength / 1024.0); SFUtils.log("平均流量:{0:F2} KB/sec", 1.0 * (totalSendLength + totalRecvLength) / totalTime / 1024.0); SFUtils.log("连接已关闭"); }
public void onViewRemoved() { SFUtils.log("SFTestView被关闭了"); }