void createPeerConnection() { objpeer = new tagpeer(); objpeer._OnRenderRemote = OnRenderRemote; objpeer.peerconn = DllImport.CreatPeerConnection(cursocketId, null, objpeer._OnRenderRemote, screenWidth, screenHeight); DllImport.AddServerConfig(objpeer.peerconn, StunIP1, "", ""); DllImport.AddServerConfig(objpeer.peerconn, StunIP2, "", ""); if (DllImport.StartPeerConnection(objpeer.peerconn)) { DllImport.CreateDataChannel(objpeer.peerconn, string.Empty); DllImport.CreateOffer(objpeer.peerconn); } }
private void button2_Click(object sender, EventArgs e) { wsclient.Close(); if (button2.Text == "关闭") { if (objpeer != null) { DllImport.StopPeerConnection(objpeer.peerconn); } objpeer = null; button2.Text = "开启"; } else { startPeerconn(); button2.Text = "关闭"; } }
void startPeerconn() { wsclient = new WebSocket("ws://" + exthost + ":9000"); wsclient.OnOpen += (wsender, wse) => { string smsg = JsonConvert.SerializeObject(new { command = "__UserCreate", udata = new { UserID = UserID, Password = Password } }); wsclient.Send(smsg); }; wsclient.OnMessage += (wsender, wse) => { Hashtable ht = JsonConvert.DeserializeObject <Hashtable>(wse.Data); var command = ht["command"].ToString(); switch (command) { case "__OnLoginSuccessful": { } break; case "__OnError": { this.BeginInvoke(new MethodInvoker(delegate() { label1.Text = ht["info"].ToString(); })); } break; case "__Offer": { tagpeer objpeer = new tagpeer(); objpeer._OnRenderLocal = OnRenderLocal; objpeer.peerconn = DllImport.CreatPeerConnection(ht["socketId"].ToString(), objpeer._OnRenderLocal, null, screenWidth, screenHeight); DllImport.AddServerConfig(objpeer.peerconn, StunIP1, "", ""); DllImport.AddServerConfig(objpeer.peerconn, StunIP2, "", ""); if (!string.IsNullOrEmpty(videoDevice) && videoDevice != "请选择摄像头") { if (!DllImport.OpenVideoCaptureDevice(objpeer.peerconn, videoDevice)) { MessageBox.Show("摄像头打开失败"); } } object sdp = JsonConvert.DeserializeObject <Hashtable>(ht["desc"].ToString())["sdp"]; if (DllImport.StartPeerConnection(objpeer.peerconn)) { OnlinePeerList.TryAdd(ht["socketId"].ToString(), objpeer); DllImport.OnOfferRequest(objpeer.peerconn, sdp.ToString()); } } break; } }; wsclient.Connect(); }