private void StartHeartbeatSender()
 {
     StopHeartbeatSender();
     HeartbeatSenderThread = new Thread(delegate()
     {
         IsHeartbeatSenderRunning = true;
         while (IsHeartbeatSenderRunning)
         {
             try
             {
                 PackWriter.SendMessage((int)BiliPackWriter.MessageType.HEARTBEAT, "[object Object]");
             }
             catch (SocketException)
             {
                 ConnectionFailed?.Invoke("心跳包发送失败");
                 Disconnect();
             }
             catch (InvalidOperationException)
             {
                 ConnectionFailed?.Invoke("心跳包发送失败");
                 Disconnect();
             }
             catch (IOException)
             {
                 ConnectionFailed?.Invoke("心跳包发送失败");
                 Disconnect();
             }
             Thread.Sleep(30 * 1000);
         }
     });
     HeartbeatSenderThread.Start();
 }
        private bool InitConnection(DanmakuServer danmakuServer)
        {
            Json.Value initMsg = new Json.Value.Object
            {
                ["uid"]       = 0,
                ["roomid"]    = danmakuServer.RoomId,
                ["protover"]  = 2,
                ["platform"]  = "web",
                ["clientver"] = "1.12.0",
                ["type"]      = 2,
                ["key"]       = danmakuServer.Token
            };

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