public void MessageReceive(ProtocolDataModel pdm) { switch (pdm.Request) { case IMProtocol.IM_NONE: break; case IMProtocol.IM_CALL_SRE: PeerCall(pdm); break; case IMProtocol.IM_STATE: CallResult(pdm); break; case IMProtocol.IM_ACCEPT_SRES: PeerAccept(pdm); break; case IMProtocol.IM_HANG_SRES: PeerHang(pdm); break; case IMProtocol.IM_SENMESSAGE_SRES: PeerMessage(pdm); break; default: break; } }
/// <summary> /// 呼叫 /// </summary> /// <param name="callID">呼叫ID</param> /// <param name="type">呼叫类型 1:音频 2:视频</param> /// <param name="from">呼叫者 ID</param> /// <param name="to">被呼叫者ID </param> public void Call(string callID, ChatType type, int from, int to) { if (CallID == "") { CallID = callID; ProtocolDataModel pd = new ProtocolDataModel(); pd.Type = ProtocolType.TYPE_IM; pd.Request = IMProtocol.IM_CALL_CRE; IMInfo info = new IMInfo(); info.UserName = UserName; info.UserID = UserID; info.CallID = callID; info.CallType = (int)type; ChatDataHandler.Instance.ChatType = type; info.PeerID = to; ChatPeerID = to; using (MemoryStream stream = new MemoryStream()) { info.WriteTo(stream); pd.Message = stream.ToArray(); } NetWorkManager.Instance.Send(pd); } }
internal void OnReceivePeerMessage(ProtocolDataModel pdm) { IMInfo info = IMInfo.Parser.ParseFrom(pdm.Message); MessagePeerName = info.UserName; MessageType tyep = (MessageType)info.MessageData[0]; byte[] data = new byte[info.MessageData.Length - 1]; Buffer.BlockCopy(info.MessageData.ToByteArray(), 1, data, 0, data.Length); switch (tyep) { case MessageType.Text: OnReciveText?.Invoke(data); break; case MessageType.Pic: OnRecivePic?.Invoke(data); break; case MessageType.Voice: OnReciveVoice?.Invoke(data); break; default: break; } }
public void SendPeerMessage(byte[] message, MessageType t) { byte[] type = new byte[1] { (byte)t }; byte[] data = new byte[message.Length + 1]; Buffer.BlockCopy(type, 0, data, 0, 1); Buffer.BlockCopy(message, 0, data, 1, message.Length); IMInfo info = new IMInfo(); info.UserID = ChatManager.Instance.UserID; info.PeerID = ChatUIManager.Instance.SelectFriendID; info.UserName = ChatManager.Instance.UserName; info.MessageData = ByteString.CopyFrom(data); ProtocolDataModel pd = new ProtocolDataModel(); pd.Type = ProtocolType.TYPE_IM; pd.Request = IMProtocol.IM_SENMESSAGE_CRES; pd.Message = info.ToByteArray(); NetWorkManager.Instance.Send(pd); }
/// <summary> /// 挂断 /// </summary> public void Hang() { if (CallID != 0) { ProtocolDataModel pd = new ProtocolDataModel(); pd.Type = ProtocolType.TYPE_IM; pd.Request = IMProtocol.IM_HANG_CRES; IMInfo info = new IMInfo(); info.PeerID = ChatPeerID; pd.Message = info.ToByteArray(); NetWorkManager.Instance.Send(pd); //send udp hang CallInfo callInfo = new CallInfo(); callInfo.CallID = CallID; UdplDataModel model = new UdplDataModel(); model.Request = RequestByte.REQUEST_HANG; model.ChatInfoData = callInfo.ToByteArray(); byte[] data = UdpMessageCodec.Encode(model); UdpSocketManager.Instance.Send(UdpMessageCodec.Encode(model)); //结束udp传输 ChatDataHandler.Instance.StopChat(); CallID = 0; } }
private void CallResult(ProtocolDataModel pdm) { ResultCode code = (ResultCode)(BitConverter.ToInt32(pdm.Message, 0)); print("Call Result:" + code.ToString()); MessageManager._instance.ShowMessage("Call Result:" + code.ToString()); ChatUIManager.Instance.CallResult(code == ResultCode.RESULT_ONLINE); }
void Update() { if (receiveDataList.Count > 0) { ProtocolDataModel model = pdmDecode(receiveDataList.Dequeue()); StartCoroutine("MessageReceive", model); } }
/// <summary> /// 获取在线列表 /// </summary> public void GetOnlineUserList() { ProtocolDataModel pd = new ProtocolDataModel(); pd.Type = ProtocolType.TYPE_MYSQL; pd.Request = MySqlDataProtocol.MYSQL_ONLINEUSER_CREQ; NetWorkManager.Instance.Send(pd); }
ProtocolDataModel pdmDecode(byte[] value) { ProtocolDataModel pdm = new ProtocolDataModel(); pdm.Type = value[0]; pdm.Request = value[1]; if (value.Length > 2) { byte[] message = new byte[value.Length - 2]; Buffer.BlockCopy(value, 2, message, 0, value.Length - 2); pdm.Message = message; } return(pdm); }
private void peerCall(ProtocolDataModel pdm) { IMInfo info = ProtobufCodec.DeSerialize <IMInfo>(pdm.Message); ChatManager._instance.InviteCome = true; ChatManager._instance.ChatPeerName = info.UserName; ChatManager._instance.ChatPeerID = info.UserID; ChatManager._instance.CallID = info.CallID; int type = info.CallType; ChatDataHandler.Instance.chatType = type == 1 ? ChatType.Audio : ChatType.AV; print("收到通话邀请:" + info.UserName + ",CallID:" + info.CallID); }
private void PeerCall(ProtocolDataModel pdm) { IMInfo info = IMInfo.Parser.ParseFrom(pdm.Message); ChatManager.Instance.InviteCome = true; ChatManager.Instance.ChatPeerName = info.UserName; ChatManager.Instance.ChatPeerID = info.UserID; ChatManager.Instance.CallID = info.CallID; int type = info.CallType; ChatDataHandler.Instance.ChatType = (ChatType)type; print("Receive call:" + info.UserName + ",CallID:" + info.CallID); }
/// <summary> /// /登录 /// </summary> /// <param name="account">账号</param> /// <param name="password">密码</param> public void Login(string account, string password) { checkConnect(); ProtocolDataModel pd = new ProtocolDataModel(); pd.Type = ProtocolType.TYPE_MYSQL; pd.Request = MySqlDataProtocol.MYSQL_LOGIN_CRES; LoginInfo info = new LoginInfo(); info.Account = account; info.Password = password; pd.Message = ProtobufCodec.Serialize(info); NetWorkManager.Instance.Send(pd); }
/// <summary> /// /登录 /// </summary> /// <param name="account">账号</param> /// <param name="password">密码</param> public void Login(string userName, int userId = 0) { ProtocolDataModel pd = new ProtocolDataModel(); pd.Type = ProtocolType.TYPE_MYSQL; pd.Request = MySqlDataProtocol.MYSQL_LOGIN_CRES; LoginInfo info = new LoginInfo(); info.UserName = userName; info.UserID = userId; pd.Message = info.ToByteArray(); NetWorkManager.Instance.Send(pd); }
void MessageReceive(ProtocolDataModel pdm) { switch (pdm.Type) { case ProtocolType.TYPE_NONE: break; case ProtocolType.TYPE_MYSQL: mySqlHandler.MessageReceive(pdm); break; case ProtocolType.TYPE_IM: imHandler.MessageReceive(pdm); break; } }
private void Login(ProtocolDataModel pdm) { if (pdm.Message.Length == 4) { ResultCode result = (ResultCode)(BitConverter.ToInt32(pdm.Message, 0)); print("Login result:" + result.ToString()); bool res = result == ResultCode.RESULT_SUCCESS ? true : false; MainUIManager._instance.LoginResult(res); } else { UserInfo user = UserInfo.Parser.ParseFrom(pdm.Message); ChatManager.Instance.UserID = user.UserID; ChatManager.Instance.UserName = user.UserName; } }
/// <summary> /// 挂断 /// </summary> public void Hang() { if (CallID != "") { CallID = ""; checkConnect(); ProtocolDataModel pd = new ProtocolDataModel(); pd.Type = ProtocolType.TYPE_IM; pd.Request = IMProtocol.IM_HANG_CRES; IMInfo info = new IMInfo(); info.PeerID = ChatPeerID; pd.Message = ProtobufCodec.Serialize(info); NetWorkManager.Instance.Send(pd); //结束udp传输 ChatDataHandler.Instance.StopChat(); } }
/// <summary> /// 接听 /// </summary> public void Accept() { ProtocolDataModel pd = new ProtocolDataModel(); pd.Type = ProtocolType.TYPE_IM; pd.Request = IMProtocol.IM_ACCEPT_CRES; IMInfo info = new IMInfo(); info.UserName = UserName; info.UserID = UserID; info.PeerID = ChatPeerID; //info.CallType = type; pd.Message = info.ToByteArray(); NetWorkManager.Instance.Send(pd); //开始udp传输 ChatDataHandler.Instance.StartChat(); }
/// <summary> /// /登录 /// </summary> /// <param name="account">账号</param> /// <param name="password">密码</param> public void Login(string account, string password) { ProtocolDataModel pd = new ProtocolDataModel(); pd.Type = ProtocolType.TYPE_MYSQL; pd.Request = MySqlDataProtocol.MYSQL_LOGIN_CRES; LoginInfo info = new LoginInfo(); info.Account = account; info.Password = password; using (MemoryStream stream = new MemoryStream()) { info.WriteTo(stream); pd.Message = stream.ToArray(); } NetWorkManager.Instance.Send(pd); }
public void MessageReceive(ProtocolDataModel pdm) { switch (pdm.Request) { case MySqlDataProtocol.MYSQL_NONE: break; case MySqlDataProtocol.MYSQL_LOGIN_SRES: Login(pdm); break; case MySqlDataProtocol.MYSQL_ONLINEUSE_SRES: GetOnlineUser(pdm); break; default: break; } }
private void GetOnlineUser(ProtocolDataModel pdm) { OnlineUserInfo info = ProtobufCodec.DeSerialize <OnlineUserInfo>(pdm.Message); if (info != null) { ChatManager._instance.OnlineUserList = info.OnlineUserLiset; } else { ChatManager._instance.OnlineUserList = new Dictionary <int, string>(); } ChatManager._instance.UserlistUpdate = true; int count = info == null ? 0 : info.OnlineUserLiset.Count; print("GetOnlineUser:" + count); }
/// <summary> /// 挂断 /// </summary> public void Hang() { if (CallID != "") { CallID = ""; ProtocolDataModel pd = new ProtocolDataModel(); pd.Type = ProtocolType.TYPE_IM; pd.Request = IMProtocol.IM_HANG_CRES; IMInfo info = new IMInfo(); info.PeerID = ChatPeerID; using (MemoryStream stream = new MemoryStream()) { info.WriteTo(stream); pd.Message = stream.ToArray(); } NetWorkManager.Instance.Send(pd); //结束udp传输 ChatDataHandler.Instance.StopChat(); } }
/// <summary> /// 呼叫 /// </summary> /// <param name="callID">呼叫ID</param> /// <param name="type">呼叫类型 1:音频 2:视频</param> /// <param name="from">呼叫者 ID</param> /// <param name="to">被呼叫者ID </param> public void Call(long callID, ChatType type, int from, int to) { if (CallID == 0) { CallID = callID; ProtocolDataModel pd = new ProtocolDataModel(); pd.Type = ProtocolType.TYPE_IM; pd.Request = IMProtocol.IM_CALL_CRE; IMInfo info = new IMInfo(); info.UserName = UserName; info.UserID = UserID; info.CallID = callID; info.CallType = (int)type; ChatDataHandler.Instance.ChatType = type; info.PeerID = to; ChatPeerID = to; pd.Message = info.ToByteArray(); NetWorkManager.Instance.Send(pd); } }
/// <summary> /// 接听 /// </summary> public void Accept() { ProtocolDataModel pd = new ProtocolDataModel(); pd.Type = ProtocolType.TYPE_IM; pd.Request = IMProtocol.IM_ACCEPT_CRES; IMInfo info = new IMInfo(); info.UserName = UserName; info.UserID = UserID; info.PeerID = ChatPeerID; //info.CallType = type; using (MemoryStream stream = new MemoryStream()) { info.WriteTo(stream); pd.Message = stream.ToArray(); } NetWorkManager.Instance.Send(pd); //开始udp传输 ChatDataHandler.Instance.StartChat(); }
private void GetOnlineUser(ProtocolDataModel pdm) { OnlineUserInfo info = OnlineUserInfo.Parser.ParseFrom(pdm.Message); if (info != null) { ChatManager.Instance.OnlineUserList.Clear(); for (int i = 0; i < info.UserList.Count; i++) { ChatManager.Instance.OnlineUserList.Add(info.UserList[i].UserID, info.UserList[i].UserName); } } else { ChatManager.Instance.OnlineUserList = new Dictionary <int, string>(); } ChatManager.Instance.UserlistUpdate = true; int count = info == null ? 0 : info.UserList.Count; print("GetOnlineUser:" + count); }
/// <summary> /// 呼叫 /// </summary> /// <param name="callID">呼叫ID</param> /// <param name="type">呼叫类型 1:音频 2:视频</param> /// <param name="from">呼叫者 ID</param> /// <param name="to">被呼叫者ID </param> public void Call(string callID, int type, int from, int to) { if (CallID == "") { CallID = callID; checkConnect(); ProtocolDataModel pd = new ProtocolDataModel(); pd.Type = ProtocolType.TYPE_IM; pd.Request = IMProtocol.IM_CALL_CRE; IMInfo info = new IMInfo(); info.UserName = UserName; info.UserID = UserID; info.CallID = callID; info.CallType = type; ChatDataHandler.Instance.chatType = type == 1 ? ChatType.Audio : ChatType.AV; info.PeerID = to; ChatPeerID = to; pd.Message = ProtobufCodec.Serialize(info); NetWorkManager.Instance.Send(pd); } }
private void Register(ProtocolDataModel pdm) { ResultCode result = (ResultCode)(BitConverter.ToInt32(pdm.Message, 0)); print("Register result:" + result.ToString()); }
private void PeerAccept(ProtocolDataModel pdm) { print("Peer Accept"); ChatManager.Instance.UserComeIn = true; }
private void PeerHang(ProtocolDataModel pdm) { print("Peer Hang"); ChatUIManager.Instance.Hang(); }
private void PeerMessage(ProtocolDataModel pdm) { print("Receive message:" + pdm.Message.Length); }
private void PeerMessage(ProtocolDataModel pdm) { print("Receive message:" + pdm.Message.Length); ChatSendMessageManager.Instance?.OnReceivePeerMessage(pdm); }