示例#1
0
 private void StartHeartbeatSender(TcpClient tcpClient)
 {
     StopHeartbeatSender();
     heartbeatSenderThread = new Thread(delegate()
     {
         heartbeatSenderStarted = true;
         while (heartbeatSenderStarted)
         {
             try
             {
                 BiliPackWriter.SendMessage(tcpClient.GetStream(), (int)BiliPackWriter.MessageType.HEARTBEAT, "");
             }
             catch (SocketException)
             {
                 ConnectionFailed?.Invoke("心跳包发送失败");
                 Disconnect();
             }
             catch (InvalidOperationException)
             {
                 ConnectionFailed?.Invoke("心跳包发送失败");
                 Disconnect();
             }
             catch (IOException)
             {
                 ConnectionFailed?.Invoke("心跳包发送失败");
                 Disconnect();
             }
             Thread.Sleep(30 * 1000);
         }
     });
     heartbeatSenderThread.Start();
 }
示例#2
0
        private TcpClient Connect(DanmakuServer danmakuServer)
        {
            TcpClient tcpClient = new TcpClient();

            tcpClient.Connect(danmakuServer.Server, danmakuServer.Port);
            NetworkStream networkStream = tcpClient.GetStream();

            //string msg = string.Format("{{\"roomid\":{0},\"uid\":{1}}}", danmakuServer,roomId, (long)(1e14 + 2e14 * new Random().NextDouble()));

            Json.Value initMsg = new Json.Value.Object();
            initMsg["uid"]       = 0;
            initMsg["roomid"]    = danmakuServer.RoomId;
            initMsg["protover"]  = 2;
            initMsg["platform"]  = "web";
            initMsg["clientver"] = "1.9.3";
            initMsg["type"]      = 2;
            initMsg["key"]       = danmakuServer.Token;

            try
            {
                BiliPackWriter.SendMessage(networkStream, (int)BiliPackWriter.MessageType.CONNECT, initMsg.ToString());
            }
            catch (SocketException)
            {
                ConnectionFailed?.Invoke("连接请求发送失败");
                Disconnect();
            }
            catch (InvalidOperationException)
            {
                ConnectionFailed?.Invoke("连接请求发送失败");
                Disconnect();
            }
            catch (IOException)
            {
                ConnectionFailed?.Invoke("连接请求发送失败");
                Disconnect();
            }
            return(tcpClient);
        }