Example #1
0
        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);
            }
        }
Example #2
0
 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 = "关闭";
     }
 }
Example #3
0
        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();
        }