/// <summary> /// Hang up call /// </summary> public void Hang() { if (CallID != 0) { DataModel model = new DataModel(); model.Type = ChatProtocolType.TYPE_IM; model.Request = IMProtocol.IM_HANG; IMInfo info = new IMInfo(); info.UserID = UserID; info.CallID = CallID; info.UserList.AddRange(ChatPeers); model.Message = info.ToByteArray(); ChatNetworkManager.Instance.Send(model); //send udp hang UdplDataModel udp = new UdplDataModel(); udp.Request = UdpRequest.REQUEST_HANG; udp.ChatInfoData = model.Message; byte[] udpData = UdpMessageCodec.Encode(udp); UdpSocketManager.Instance.Send(udpData); //stop udp ChatDataHandler.Instance.StopChat(); CallID = 0; ChatPeers.Clear(); isChatting = false; } }
void OnHang(DataModel model) { IMInfo info = IMInfo.Parser.ParseFrom(model.Message); print("receive hang:" + info.UserID); ChatManager.Instance.OnHang(info); }
protected void GridView_OnSelectedIndexChanged(object sender, EventArgs e) { pnlDonor.Visible = true; pnlshow.Visible = true; pnlBene.Visible = false; dtinfo.DateSeparator = "/"; dtinfo.ShortDatePattern = "dd/MM/yyyy"; iminfo = new IMInfo(); string[] strInfo = iminfo.info(GridIM.SelectedRow.Cells[1].Text.ToString()); lblDIMID.Text = GridIM.SelectedRow.Cells[1].Text.ToString(); lblDName.Text = strInfo[0].ToString(); lblDAddress1.Text = strInfo[1].ToString(); lblDAddress2.Text = strInfo[2].ToString(); lblDCity.Text = strInfo[3].ToString() + ", " + strInfo[4].ToString() + "-" + strInfo[5].ToString(); String[] strimac = iminfo.imac(GridIM.SelectedRow.Cells[1].Text.ToString()); lblDLateFees.Text = strimac[0].ToString().TrimEnd('0').TrimEnd('.'); lblDAmount.Text = strimac[1].ToString().TrimEnd('0').TrimEnd('.'); lblDGAmount.Text = strimac[2].ToString().TrimEnd('0').TrimEnd('.'); lblSubDate.Text = GridIM.SelectedRow.Cells[3].Text.ToString(); lblDDNo.Text = GridIM.SelectedRow.Cells[4].Text.ToString(); lblBankNo.Text = GridIM.SelectedRow.Cells[5].Text.ToString(); lblAmount.Text = GridIM.SelectedRow.Cells[2].Text.ToString().TrimEnd('0').TrimEnd('.'); lblDiaryNo.Text = GridIM.SelectedRow.Cells[7].Text.ToString(); lblSession.Text = GridIM.SelectedRow.Cells[6].Text.ToString(); }
/// <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; } }
protected void btnViewDiary_Click(object sender, EventArgs e) { con.Close(); con.Open(); cmd = new SqlCommand("select DiaryEntry.IMID,DiaryEntry.Date,IM.Name,ProjectCount.Session from ProjectCount inner join DiaryEntry on ProjectCount.DairyNo=DiaryEntry.DiaryNo inner join IM on DiaryEntry.IMID=IM.ID and ProjectCount.DairyNo='" + txtDiaryNo.Text.ToString() + "' and (ProjectCount.ProformaARcv!=ProjectCount.ProformaASub or ProjectCount.ProformaBRcv!=ProjectCount.ProformaBSub)", con); SqlDataReader reader; reader = cmd.ExecuteReader(); if (reader.Read()) { lblIMID.Text = reader["IMID"].ToString(); lblIMName.Text = reader["Name"].ToString(); lblDairyDate.Text = Convert.ToDateTime(reader["Date"].ToString()).ToString("dd/MM/yyyy"); lblSession.Text = reader["Session"].ToString(); lblException.Attributes.Add("class", "hide"); clear(3); IMcls = new IMInfo(); lblFeemaster.Text = IMcls.imFeeMaster(lblIMID.Text.ToString()); txtSID.Focus(); } else { lblException.Text = "Diary Not Found."; lblException.Attributes.Add("class", "error"); clear(1); } showcount(lblSession.Text, txtDiaryNo.Text, reader); reader.Close(); reader.Dispose(); con.Close(); con.Dispose(); }
/// <summary> /// Send audio data /// </summary> void SendAudio() { //Get audio data by SDK AudioPacket packet = UnityChatSDK.Instance.GetAudio(); if (packet != null) { packet.Id = ChatManager.Instance.UserID; byte[] audio = GetPbAudioPacket(packet).ToByteArray(); //UDP Send data to server if (audio != null) { UdplDataModel model = new UdplDataModel(); model.Request = UdpRequest.REQUEST_AUDIO; IMInfo info = new IMInfo(); info.UserID = ChatManager.Instance.UserID; info.CallID = ChatManager.Instance.CallID; info.UserList.Add(ChatManager.Instance.ChatPeers); model.ChatInfoData = info.ToByteArray(); model.ChatData = audio; UdpSocketManager.Instance.Send(UdpMessageCodec.Encode(model)); } } }
/// <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); } }
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); }
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; } }
void OnAccpet(DataModel model) { IMInfo info = IMInfo.Parser.ParseFrom(model.Message); print("receive accept:" + info.UserID); ChatManager.Instance.OnAccpet(info); }
protected void btnOK_Click(object sender, EventArgs e) { try { con.Close(); con.Open(); bool flg = false; cmd = new SqlCommand("select IMID,SID,StudentName,Course,Part,InstitutionID,Institution,Status,SynopsisStatus,ApprovalFees,EvalutionFees from Project where SID='" + txtSID.Text.ToString() + "' and Session='" + lblSessionHidden.Text.ToString() + "'", con); SqlDataReader reader; reader = cmd.ExecuteReader(); if (reader.Read()) { lblIMID.Text = reader["IMID"].ToString(); lblName.Text = reader["StudentName"].ToString(); lblCourse.Text = reader["Course"].ToString(); lblPart.Text = reader["Part"].ToString(); lblStatus.Text = reader["Status"].ToString(); lblInsID.Text = reader["InstitutionID"].ToString(); lblInsName.Text = reader["Institution"].ToString(); lblApprovalFees.Text = reader["ApprovalFees"].ToString().TrimEnd('0').TrimEnd('.'); lblEvaluationFees.Text = reader["EvalutionFees"].ToString().TrimEnd('0').TrimEnd('.'); lblException.Text = ""; flg = true; } else { lblException.Text = "Student Membership Not Found."; ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "success", "alert('Student Membership Not Found.')", true); flg = false; } reader.Close(); if (flg == true) { cmd = new SqlCommand("select * from IMAC where IMID='" + lblIMID.Text + "'", con); reader = cmd.ExecuteReader(); if (reader.Read()) { lblToAmount.Text = reader["Total"].ToString().TrimEnd('0').TrimEnd('.'); lblDuesAmount.Text = reader["Credit"].ToString().TrimEnd('0').TrimEnd('.'); lblBooksAmt.Text = reader["IMTotal"].ToString().TrimEnd('0').TrimEnd('.'); lblProspectus.Text = reader["Prospectus"].ToString().TrimEnd('0').TrimEnd('.'); lblProjectAmt.Text = reader["Project"].ToString().TrimEnd('0').TrimEnd('.'); } reader.Close(); reader.Dispose(); iminfo = new IMInfo(); lblFeeType.Text = iminfo.imFeeMaster(lblIMID.Text.ToString()); } } catch (SqlException ex) { ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "success", "alert('Error!!!, Student Membership Not Found.')", true); } finally { con.Close(); con.Dispose(); ddlProforma.Focus(); } }
//on user accept the call public void OnAccpet(IMInfo info) { if (isChatting) { ChatUIManager.Instance.OnPeerAccept(); ChatUIManager.Instance.OnPeerJoin(info.UserID); } }
public void OnCall(IMInfo info) { isChatting = false; ChatPeers.Clear(); ChatPeers.AddRange(info.UserList); CallID = info.CallID; ChatUIManager.Instance.OnPeerCall((ChatType)info.Type); }
private void showdiary() { pnlDepartment.Visible = false; pnlVisiblefls(); con.Close(); con.Open(); cmd = new SqlCommand("select * from DiaryEntry where DiaryNo='" + txtDiaryNo.Text.ToString() + "' and ExamSession='" + lblHiddenSeason.Text.ToString() + "'", con); SqlDataReader reader; reader = cmd.ExecuteReader(); while (reader.Read()) { diarytype = reader["MemberType"].ToString(); lblRemark.Text = reader["Remark"].ToString(); lblIMID.Text = reader["MembershipNo"].ToString(); lblIMName.Text = reader["Name"].ToString(); lblSubDate.Text = Convert.ToDateTime(reader["Date"].ToString()).ToString("dd/MM/yyyy"); lblIMAddress.Text = reader["Address1"].ToString() + "\n" + reader["Address2"].ToString(); lblIMCity.Text = reader["City"].ToString() + "\n Phone No:" + reader["Phone"].ToString(); txtPEmpName.Text = diarytype; } reader.Close(); if (diarytype == "IM") { IMInfo infos = new IMInfo(); iminfos = infos.info(lblIMID.Text.ToString()); if (iminfos[0].ToString() != null | iminfos[0].ToString() != "null") { lblIMName.Text = iminfos[0].ToString(); lblIMAddress.Text = iminfos[1].ToString() + "\n" + iminfos[2].ToString(); lblIMCity.Text = iminfos[3].ToString() + ", " + iminfos[4].ToString() + "-" + iminfos[5].ToString(); } } else if (diarytype == "Other") { lblIMName.Text.ToString(); lblIMID.Text = ""; pnlToFrom.Visible = true; tblEmpNameAcademic.Visible = true; pnlDepartment.Visible = true; } else if (diarytype == "Student") { cmd = new SqlCommand("select Name,PAddress,PAddress2,PCity,PState,Phone,Mobile from Student where SID='" + lblIMID.Text.ToString() + "'", con); reader = cmd.ExecuteReader(); if (reader.Read()) { lblIMName.Text = reader["Name"].ToString(); lblIMAddress.Text = reader["PAddress"].ToString() + "\n" + reader["PAddress2"].ToString(); lblIMCity.Text = reader["PCity"].ToString() + ", " + reader["PState"].ToString() + " Contact: " + reader["Mobile"].ToString(); } reader.Close(); } con.Close(); }
/// <summary> /// Send audio data /// </summary> void SendAudio() { //Get audio data by SDK AudioPacket packet = UnityChatSDK.Instance.GetAudio(); if (packet != null) { packet.Id = ChatManager.Instance.UserID; byte[] audio = GetPbAudioPacket(packet).ToByteArray(); switch (NetType) { case NetType.UdpStream: //UDP Send data to server if (audio != null) { UdplDataModel model = new UdplDataModel(); model.Request = UdpRequest.REQUEST_AUDIO; IMInfo info = new IMInfo(); info.UserID = ChatManager.Instance.UserID; info.CallID = ChatManager.Instance.CallID; info.UserList.Add(ChatManager.Instance.ChatPeers); model.ChatInfoData = info.ToByteArray(); model.ChatData = audio; UdpSocketManager.Instance.Send(UdpMessageCodec.Encode(model)); } break; case NetType.TcpStream: if (audio != null) { DataModel model = new DataModel(); model.Type = ChatProtocolType.TYPE_CHATDATA; model.Request = ChatDataProtocol.CHAT_AUDIO; model.Message = audio; ChatNetworkManager.Instance.Send(model); } break; default: break; } } }
internal void OnlineUserChanged() { for (int i = 0; i < ChatPeers.Count; i++) { UserInfo info = OnlineUserList.Find((UserInfo user) => { return(user.UserID == ChatPeers[i].UserID); }); if (info == null) { Debug.Log("OnPeerOffline: uid = " + ChatPeers[i].UserID); IMInfo im = new IMInfo(); im.UserID = ChatPeers[i].UserID; //User offline, hang up OnHang(im); } } }
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); }
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); }
/// <summary> /// Send video data /// </summary> IEnumerator SendVideo() { //Get video data by SDK VideoPacket packet = UnityChatSDK.Instance.GetVideo(); if (UnityChatSDK.Instance.EnableSync) { if (packet != null) { videoPacketQueue.Enqueue(packet); } if (videoPacketQueue.Count >= UnityChatSDK.Instance.Framerate / UnityChatSDK.Instance.AudioSample) { packet = videoPacketQueue.Dequeue(); } else { yield return(null); } } if (packet != null) { packet.Id = ChatManager.Instance.UserID; byte[] video = GetPbVideoPacket(packet).ToByteArray(); udpPacketIndex++; List <UdpPacket> list = UdpPacketSpliter.Split(udpPacketIndex, video, ChunkLength); UdplDataModel model = new UdplDataModel(); model.Request = UdpRequest.REQUEST_VIDEO; IMInfo info = new IMInfo(); info.UserID = ChatManager.Instance.UserID; info.CallID = ChatManager.Instance.CallID; info.UserList.Add(ChatManager.Instance.ChatPeers); model.ChatInfoData = info.ToByteArray(); for (int i = 0; i < list.Count; i++) { model.ChatData = UdpPacketEncode(list[i]); UdpSocketManager.Instance.Send(UdpMessageCodec.Encode(model)); yield return(new WaitForSeconds(0.01f)); } } }
internal void OnHang(IMInfo info) { //on user hangs up, remove the video panel UserInfo user = ChatPeers.Find((UserInfo u) => { return(u.UserID == info.UserID); }); if (user != null) { print("user leave:" + user.UserID + "," + user.UserName); ChatPeers.Remove(user); ChatUIManager.Instance.OnUserLeave(user.UserID); } //if the current number of calls ==1,just left yourself if (ChatPeers.Count == 1) { ChatUIManager.Instance.Hang(); } }
/// <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> /// Accept call invitation /// </summary> public void Accept(int userId, List <UserInfo> peerId) { DataModel model = new DataModel(); model.Type = ChatProtocolType.TYPE_IM; model.Request = IMProtocol.IM_ACCEPT; IMInfo info = new IMInfo(); info.UserID = userId; info.UserList.AddRange(peerId); model.Message = info.ToByteArray(); ChatNetworkManager.Instance.Send(model); //Start udp transmission ChatDataHandler.Instance.StartChat(); }
//发送udp心跳包 IEnumerator SendHeart() { print("start heart..."); while (isRunning) { yield return(new WaitForSeconds(0.5f)); IMInfo info = new IMInfo(); info.UserID = ChatManager.Instance.UserID; info.CallID = ChatManager.Instance.CallID; UdplDataModel model = new UdplDataModel(); model.ChatInfoData = info.ToByteArray(); model.Request = UdpRequest.REQUEST_HEART; byte[] data = UdpMessageCodec.Encode(model); Send(data); } print("stop heart..."); }
public void Call(long callID, ChatType type, int userId, List <UserInfo> peerId) { if (CallID == 0) { isChatting = true; CallID = callID; DataModel model = new DataModel(); model.Type = ChatProtocolType.TYPE_IM; model.Request = IMProtocol.IM_CALL; IMInfo info = new IMInfo(); info.CallID = callID; info.Type = (int)type; info.UserID = userId; info.UserList.AddRange(peerId); model.Message = info.ToByteArray(); ChatNetworkManager.Instance.Send(model); } }
/// <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(); } }
protected void txtBIM_ONTextChanged(object sender, EventArgs e) { pnlBene.Visible = true; iminfo = new IMInfo(); if (iminfo.isIMHave(txtBIM.Text.ToString())) { string[] strinfo = iminfo.info(txtBIM.Text.ToString()); lblBName.Text = strinfo[0].ToString(); lblBAddress.Text = strinfo[1].ToString(); lblBAddress2.Text = strinfo[2].ToString(); lblBcity.Text = strinfo[3].ToString() + ", " + strinfo[4].ToString() + "-" + strinfo[5].ToString(); string[] strimac = iminfo.imac(txtBIM.Text.ToString()); lblBLate.Text = strimac[0].ToString(); lblBTotal.Text = strimac[1].ToString(); lblBGAmount.Text = strimac[2].ToString(); } else { txtBIM.Text = "Invalid IMID."; } }
/// <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(); }
/// <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); } }