Showing source for: https://onlive.io/
Duration: 0.395826s
Server: TencentEdgeOne

<!DOCTYPE html>
<html lang="vi" style="margin-top: 0px !important">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <link rel="preconnect" href="https://fonts.googleapis.com" />
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700&display=swap" rel="stylesheet" />
  <link rel="stylesheet" href="/wp-content/themes/cakhiatv/style.css" />
  <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
    <link rel="icon" href="/favicon.ico" type="image/x-icon" />
  	<style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style>
	
<!-- Tối ưu hóa công cụ tìm kiếm bởi Rank Math - https://rankmath.com/ -->
<title>Socolive Trực Tiếp World Cup 2026 - Xem Bóng Đá HD Hôm Nay</title>
<meta name="description" content="Socolive trực tiếp bóng đá chất lượng cao ở tất cả giải đấu, cùng đội ngũ BLV chuyên nghiệp, hình ảnh HD, âm thanh sống động cùng nhiều chuyên mục hữu ích."/>
<meta name="robots" content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"/>
<link rel="canonical" href="https://onlive.io" />
<meta property="og:locale" content="vi_VN" />
<meta property="og:type" content="website" />
<meta property="og:title" content="Socolive Trực Tiếp World Cup 2026 - Xem Bóng Đá HD Hôm Nay" />
<meta property="og:description" content="Socolive trực tiếp bóng đá chất lượng cao ở tất cả giải đấu, cùng đội ngũ BLV chuyên nghiệp, hình ảnh HD, âm thanh sống động cùng nhiều chuyên mục hữu ích." />
<meta property="og:url" content="https://onlive.io" />
<meta property="og:site_name" content="Socolive Trực Tiếp Bóng Đá #1 - Xem TTBD HD Hôm Nay" />
<meta property="og:updated_time" content="2026-05-28T01:00:48+07:00" />
<meta property="article:published_time" content="2025-06-22T18:41:07+07:00" />
<meta property="article:modified_time" content="2026-05-28T01:00:48+07:00" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Socolive Trực Tiếp World Cup 2026 - Xem Bóng Đá HD Hôm Nay" />
<meta name="twitter:description" content="Socolive trực tiếp bóng đá chất lượng cao ở tất cả giải đấu, cùng đội ngũ BLV chuyên nghiệp, hình ảnh HD, âm thanh sống động cùng nhiều chuyên mục hữu ích." />
<meta name="twitter:label1" content="Thời gian để đọc" />
<meta name="twitter:data1" content="28 phút" />
<script type="application/ld+json" class="rank-math-schema">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://onlive.io/#organization","name":"Socolive"},{"@type":"WebSite","@id":"https://onlive.io/#website","url":"https://onlive.io","name":"Socolive Tr\u1ef1c Ti\u1ebfp B\u00f3ng \u0110\u00e1 #1 - Xem TTBD HD H\u00f4m Nay","alternateName":"Socolive Tr\u1ef1c Ti\u1ebfp B\u00f3ng \u0110\u00e1 #1 - Xem TTBD HD H\u00f4m Nay","publisher":{"@id":"https://onlive.io/#organization"},"inLanguage":"vi","potentialAction":{"@type":"SearchAction","target":"https://onlive.io/?s={search_term_string}","query-input":"required name=search_term_string"}},{"@type":"ImageObject","@id":"https://img.lightshot.app/hXkre55LTRqTF86dvOOGxA.jpg","url":"https://img.lightshot.app/hXkre55LTRqTF86dvOOGxA.jpg","width":"200","height":"200","inLanguage":"vi"},{"@type":"WebPage","@id":"https://onlive.io#webpage","url":"https://onlive.io","name":"Socolive Tr\u1ef1c Ti\u1ebfp World Cup 2026 - Xem B\u00f3ng \u0110\u00e1 HD H\u00f4m Nay","datePublished":"2025-06-22T18:41:07+07:00","dateModified":"2026-05-28T01:00:48+07:00","about":{"@id":"https://onlive.io/#organization"},"isPartOf":{"@id":"https://onlive.io/#website"},"primaryImageOfPage":{"@id":"https://img.lightshot.app/hXkre55LTRqTF86dvOOGxA.jpg"},"inLanguage":"vi"},{"@type":"Person","@id":"https://onlive.io/author","url":"https://onlive.io/author","image":{"@type":"ImageObject","@id":"https://secure.gravatar.com/avatar/?s=96&amp;d=mm&amp;r=g","url":"https://secure.gravatar.com/avatar/?s=96&amp;d=mm&amp;r=g","inLanguage":"vi"},"worksFor":{"@id":"https://onlive.io/#organization"}},{"@type":"Article","headline":"Socolive Tr\u1ef1c Ti\u1ebfp World Cup 2026 - Xem B\u00f3ng \u0110\u00e1 HD H\u00f4m Nay","keywords":"socolive","datePublished":"2025-06-22T18:41:07+07:00","dateModified":"2026-05-28T01:00:48+07:00","author":{"@id":"https://onlive.io/author"},"publisher":{"@id":"https://onlive.io/#organization"},"description":"Socolive tr\u1ef1c ti\u1ebfp b\u00f3ng \u0111\u00e1 ch\u1ea5t l\u01b0\u1ee3ng cao \u1edf t\u1ea5t c\u1ea3 gi\u1ea3i \u0111\u1ea5u, c\u00f9ng \u0111\u1ed9i ng\u0169 BLV chuy\u00ean nghi\u1ec7p, h\u00ecnh \u1ea3nh HD, \u00e2m thanh s\u1ed1ng \u0111\u1ed9ng c\u00f9ng nhi\u1ec1u chuy\u00ean m\u1ee5c h\u1eefu \u00edch.","name":"Socolive Tr\u1ef1c Ti\u1ebfp World Cup 2026 - Xem B\u00f3ng \u0110\u00e1 HD H\u00f4m Nay","@id":"https://onlive.io#richSnippet","isPartOf":{"@id":"https://onlive.io#webpage"},"image":{"@id":"https://img.lightshot.app/hXkre55LTRqTF86dvOOGxA.jpg"},"inLanguage":"vi","mainEntityOfPage":{"@id":"https://onlive.io#webpage"}}]}</script>
<!-- /Plugin SEO WordPress Rank Math -->

<link rel='dns-prefetch' href='//cdn.onlive.io' />
<script type="text/javascript">
/* <![CDATA[ */
window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.1.0\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.1.0\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/cdn.onlive.io\/wp-content\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.8.1"}};
/*! This file is auto-generated */
!function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\ud83d\udd25","\ud83d\udc26\u200b\ud83d\udd25")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings);
/* ]]> */
</script>
<style id='wp-emoji-styles-inline-css' type='text/css'>

	img.wp-smiley, img.emoji {
		display: inline !important;
		border: none !important;
		box-shadow: none !important;
		height: 1em !important;
		width: 1em !important;
		margin: 0 0.07em !important;
		vertical-align: -0.1em !important;
		background: none !important;
		padding: 0 !important;
	}
</style>
<link rel='stylesheet' id='wp-block-library-css' href='https://cdn.onlive.io/wp-content/wp-includes/css/dist/block-library/style.min.css?ver=6.8.1' type='text/css' media='all' />
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
</style>
<style id='global-styles-inline-css' type='text/css'>
:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
:root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}
</style>
<link rel='stylesheet' id='main-style-css' href='https://cdn.onlive.io/wp-content/themes/cakhiatv/style.css?ver=6.8.1' type='text/css' media='all' />
<link rel="https://api.w.org/" href="https://onlive.io/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://onlive.io/wp-json/wp/v2/pages/1060" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://onlive.io/xmlrpc.php?rsd" />
<meta name="generator" content="WordPress 6.8.1" />
<link rel='shortlink' href='https://onlive.io/' />
<link rel="alternate" title="oNhúng (JSON)" type="application/json+oembed" href="https://onlive.io/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fonlive.io%2F" />
<link rel="alternate" title="oNhúng (XML)" type="text/xml+oembed" href="https://onlive.io/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fonlive.io%2F&#038;format=xml" />
    <style>
        @media (min-width: 1024px) {
            h1 {
                font-size: 1.5em !important;
            }
        }

        .match-teams-score {
            display: flex !important;
        }

        @media (max-width: 767px) {
            .xgplayer .xg-inner-controls {
                height: 60px !important;
            }
            .header .logo img{
                height: 35px;
            }
        }

        @media (min-width: 481px) and (max-width: 767px) {
            div#chat_messages {
                max-height: 60vh !important;
            }
        }
    </style>
    <style>
            .match-section {
                min-height: 4800px;
            }
            
            .match-card__status {
                position: absolute;
                top: 13%;
                left: 50%;
                transform: translate(-50%, -50%);
            }
            
            .match-card__stats-content {
                background: none !important;
                box-shadow: none !important
            }
            
            
            
            @media (max-width: 480px) {
                .team__logo {
                    width: 40px !important;
                    height: 40px !important;
                }
                .match-card__league {
                    max-width: 100px;
                }
                
                .match-card__time {
                    max-width: 100px;
                }
                
                .match-card__status {
                    max-width: 120px;
                    order: 1 !important;
                    font-size: 12px
                }
                
                .streaming {
                    padding: 4px;
                }
                
                .btn-view-truc-tiep {
                    padding: 8px 4px !important;
                    font-size: 12px;
                }
                .match-card__stats-content {
                    display: block !important;
                }
                
                .match-card__stats {
                    display: block !important
                }
            }
            
            @media (min-width: 768px) and (max-width: 1024px) {
                .match-card__status {
                    position: absolute;
                    top: 13%;
                    left: 50%;
                    transform: translate(-50%, -50%);
                }
                
                .match-card__league {
                    max-width: 110px;
                }
            }
        </style>  
      <!-- Google tag (tổng) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-V8GXMSME5N"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-V8GXMSME5N');
</script>

<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-3CTCBSJ8FR"></script>
<script>    
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());

gtag('config', 'G-3CTCBSJ8FR');
</script>
  
<script src="//s1.what-on.com/widget/service-v2.js?key=0fBdTp" async="async"></script>

  
</head>

<body>
  <!-- Header -->
<header class="header">
    <div class="container">
      <div class="header__inner">
        <a href="/" class="logo">
          <img src="/wp-content/uploads/2025/07/logo-socolive.png" alt="Socolive TV" />
        </a>
        <div style="display: flex; align-items: center">
          <nav class="nav">
            <button class="nav__toggle">
              <img src="https://cdn.onlive.io/wp-content/themes/cakhiatv/assets/images/hamburger.svg" alt="Menu" />
            </button>

            <ul class="nav__menu">
              <button class="nav__close" aria-label="Close menu"></button>
              <li class="nav__item"><a href="https://onlive.io/lich-thi-dau" class="">LỊCH THI ĐẤU</a></li><li class="nav__item"><a href="https://onlive.io/bang-xep-hang" class="">BẢNG XẾP HẠNG</a></li><li class="nav__item"><a href="https://onlive.io/ket-qua-bong-da" class="">KẾT QUẢ BÓNG ĐÁ</a></li><li class="nav__item"><a href="https://onlive.io/category/nhan-dinh" class="">NHẬN ĐỊNH</a></li><li class="nav__item"><a href="https://onlive.io/category/tin-tuc" class="">TIN TỨC</a></li>            </ul>
          </nav>
          <div class="header__buttons">
            <a href="https://refvsbg.com/" class="btn btn--secondary header-button" rel="nofollow">
              <span class="header-text">CƯỢC VSBET</span>
            </a>
            <a href="https://t.me/vsbet88888888888888888" rel="nofollow" target="_blank" class="btn btn--default header-button">
              <span class="header-text">LIÊN HỆ KM</span>
            </a>
          </div>

        </div>



      </div>
    </div>
  </header>
 

<style>
    .match-card__stats-content {
        background: none !important;
    box-shadow: none !important;
    }
</style>
   <!-- Main Content -->
     <!-- Main Content -->
     <main style="padding-top: 1px">
      <!-- Hero Section -->
      <section class="hero">
        <div class="container">
          <div class="hero__content">
            <h1 class="text-uppercase" style="text-align: left; color: white">
                Socolive Trực Tiếp Bóng Đá #1 - Xem TTBD HD Hôm Nay
            </h1>
          </div>
        </div>
      </section>

      <!-- Sports Filter -->
      <section class="sports-filter">
        <div class="container">
          <div class="sports-filter__inner" style="display: none">
            <!-- Group 1: Sports Categories -->
            <!--<div class="sports-filter__group sports-categories">
            <button
                class="sports-filter__button"
                data-sport="all"
              >
                <div class="sports-filter__button-icon">
                  <img
                    src="https://cdn.onlive.io/wp-content/themes/cakhiatv/assets/images/icons/football.png"
                    alt="Tất Cả"
                  />
                </div>
                <div class="sports-filter__button-text">Tất Cả</div>
                <div class="sports-filter__button-count" id="count-all-type"></div>
              </button>

              <button
                class="sports-filter__button"
                data-sport="football"
              >
                <div class="sports-filter__button-icon">
                  <img
                    src="https://cdn.onlive.io/wp-content/themes/cakhiatv/assets/images/icons/football.png"
                    alt="Football"
                  />
                </div>
                <div class="sports-filter__button-text">Bóng đá</div>
                <div class="sports-filter__button-count" id="count-football"></div>
              </button>

              <button class="sports-filter__button" data-sport="basketball">
                <div class="sports-filter__button-icon">
                  <img
                    src="https://cdn.onlive.io/wp-content/themes/cakhiatv/assets/images/icons/basketball.png"
                    alt="Basketball"
                  />
                </div>
                <div class="sports-filter__button-text">Bóng rổ</div>
                <div class="sports-filter__button-count" id="count-basketball"></div>
              </button>

             <!-- <button class="sports-filter__button" data-sport="tennis">
                <div class="sports-filter__button-icon">
                  <img src="https://cdn.onlive.io/wp-content/themes/cakhiatv/assets/images/icons/tennis.png" alt="Tennis" />
                </div>
                <div class="sports-filter__button-text">Tennis</div>
                <div class="sports-filter__button-count" id="count-tennis"></div>
              </button> -->

              <!--<button class="sports-filter__button" data-sport="volleyball">
                <div class="sports-filter__button-icon">
                  <img
                    src="https://cdn.onlive.io/wp-content/themes/cakhiatv/assets/images/icons/volleyball.png"
                    alt="Volleyball"
                  />
                </div>
                <div class="sports-filter__button-text">Bóng chuyền</div>
                <div class="sports-filter__button-count" id="count-volleyball"></div>
              </button> -->

              <div class="livescore-switch">
                <label class="switch">
                  <input type="checkbox" id="livescoreToggle" />
                  <span class="slider"></span>
                </label>
                <span class="livescore-label">Livescore</span>
              </div>
            </div>

            <!-- Divider -->
            <div class="sports-filter__divider"></div>

            <!-- Group 2: Match Filters -->
            <div class="sports-filter__group match-filters">
            <button class="sports-filter__button_child active" data-filter="child_all">
                <div class="sports-filter__button-icon">
                  <img src="https://cdn.onlive.io/wp-content/themes/cakhiatv/assets/images/icons/all.png" alt="All" />
                </div>
                <div class="sports-filter__button-text">Tất cả</div>
                <div class="sports-filter__button-count" id="count-all-type"></div>
              </button>

              <button class="sports-filter__button_child live" data-filter="live">
                <div class="sports-filter__button-icon">
                  <img src="https://cdn.onlive.io/wp-content/themes/cakhiatv/assets/images/icons/live.png" alt="Live" />
                </div>
                <div class="sports-filter__button-text">Đang Live</div>
                <div class="sports-filter__button-count" id="count-live"></div>
              </button>

              <!--<button class="sports-filter__button_child" data-filter="hot">
                <div class="sports-filter__button-icon">
                  <img src="https://cdn.onlive.io/wp-content/themes/cakhiatv/assets/images/icons/hot.png" alt="Hot" />
                </div>
                <div class="sports-filter__button-text">Trận HOT</div>
                <div class="sports-filter__button-count" id="count-hot">48</div>
              </button>-->

             <button class="sports-filter__button_child" data-filter="date" data-value="">
                <div class="sports-filter__button-icon">
                  <img src="https://cdn.onlive.io/wp-content/themes/cakhiatv/assets/images/icons/calendar.png" alt="Today" />
                </div>
                <div class="sports-filter__button-text">Hôm Nay</div>
                <div class="sports-filter__button-count" id="count-today"></div>
              </button>

              <button class="sports-filter__button_child" data-filter="date" data-value="">
                <div class="sports-filter__button-icon">
                  <img
                    src="https://cdn.onlive.io/wp-content/themes/cakhiatv/assets/images/icons/calendar.png"
                    alt="Tomorrow"
                  />
                </div>
                <div class="sports-filter__button-text">Ngày Mai</div>
                <div class="sports-filter__button-count" id="count-tomorrow"></div>
              </button>       
            <!--  
             <button class="sports-filter__button_child" data-filter="no_blv">
                <div class="sports-filter__button-text">Live không BLV</div>
                <div class="sports-filter__button-count" id="noblv-live">0</div>
              </button>
              -->
            </div>
          </div>
        </div>
      </section>

      <!-- Featured Matches -->
      <section class="featured-matches">
        <div class="container">
        <div class="match-section">
            <div id="match-list" class="matches">
            </div>
          </div>

          <!--<div
            style="
              display: flex;
              justify-content: center;
              margin-top: 1rem;
              margin-bottom: 1rem;
            "
          >
            <a href="#" class="btn btn--readmore">
              <span>Xem thêm lịch trực tiếp -></span>
            </a>
          </div>-->
        </div>
      </section>

      <!-- Content Navigation Section -->
      <section class="content-nav">
  <div class="container">
    <div class="content-nav__container" style="max-height:800px !important">
      <div class="content-nav__lists">
        <div class="content-nav__list">
          <!-- Nếu bạn vẫn muốn giữ Mục lục này thủ công, thì để lại -->
          <p style="font-weight: bold; font-size: 120%">Mục Lục</p>
          <!-- Hoặc có thể xoá toàn bộ <ul> này nếu muốn Gutenberg xử lý luôn -->

          <div class="content-nav__divider"></div>

          <div class="content-nav__text">
            
<p>Trong thế giới bóng đá nơi từng giây đều có thể làm thay đổi cảm xúc của hàng triệu con người, <strong><a href="/">Socolive</a></strong> xuất hiện như <strong>một biểu tượng của trải nghiệm sống động – chân thực – mạnh mẽ</strong>. Không chỉ đơn thuần là một trang xem bóng đá trực tuyến, <strong>Socolive là nền tảng được thiết kế để phục vụ những người yêu bóng đá theo cách xứng đáng nhất</strong>: nhanh hơn, sắc nét hơn và… không bao giờ để bạn bỏ lỡ bất kỳ khoảnh khắc quyết định nào.</p>



<p>Chúng tôi tin rằng:<br>👉 <strong>Bóng đá phải được thưởng thức theo cách đỉnh nhất.</strong><br>👉 <strong>Mỗi trận đấu phải mang trọn cảm xúc, không bị giật lag, không bị gián đoạn.</strong><br>👉 <strong>Người hâm mộ xứng đáng có một nền tảng ở tầm cao mới.</strong></p>



<p>Đó là lý do Socolive được xây dựng – như một <strong>thương hiệu dẫn đầu</strong> trong lĩnh vực trực tiếp bóng đá chất lượng cao.</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://img.lightshot.app/hXkre55LTRqTF86dvOOGxA.jpg" alt="Giới thiệu tổng quan về kênh xem bóng đá trực tuyến Socolive TV"/><figcaption class="wp-element-caption">Giới thiệu tổng quan về kênh xem bóng đá trực tuyến Socolive TV</figcaption></figure>



<h2 class="wp-block-heading">Socolive là gì? – Nền tảng dành cho fan bóng đá chân chính</h2>



<p>Socolive không phải là một trang xem bóng đá được tạo ra cho có. Từ ngày đầu tiên, chúng tôi đã đặt mục tiêu trở thành nền tảng mang lại trải nghiệm xem bóng đá thật sự khác biệt cho fan Việt. Hình ảnh phải chuẩn HD, tốc độ phải mượt như truyền hình vệ tinh và đặc biệt là phải ổn định ngay cả khi hàng trăm nghìn người cùng xem một trận cầu kinh điển. Với Socolive, bạn không chỉ xem – bạn hòa mình vào trận đấu.</p>



<h3 class="wp-block-heading">Socolive – một thương hiệu trực tiếp bóng đá được xây dựng từ tiêu chuẩn cao</h3>



<p>Ngay khi ra mắt, chúng tôi đã theo đuổi triết lý rõ ràng: <em>“Trải nghiệm tốt mới xứng đáng để phục vụ fan bóng đá.”</em> Chính vì vậy, mọi thứ từ giao diện, tốc độ load trang, hệ thống server, đến chất lượng truyền dẫn đều được tối ưu liên tục. Bạn có thể cảm nhận sự khác biệt ngay khi vào website: sạch, nhẹ, mượt và luôn sẵn sàng cho trận đấu quan trọng.</p>



<p>Một vài giá trị thương hiệu luôn được đặt lên hàng đầu gồm:</p>



<ul class="wp-block-list">
<li><strong>Tốc độ truyền tải mạnh</strong>, hạn chế tối đa delay.</li>



<li><strong>Chất lượng hình ảnh ổn định</strong>, luôn ưu tiên Full HD.</li>



<li><strong>Hệ thống server chịu tải tốt</strong>, đặc biệt vào trận hot.</li>



<li><strong>Giao diện đơn giản</strong>, phù hợp thói quen của fan Việt.</li>
</ul>



<h3 class="wp-block-heading">Socolive sinh ra để giải quyết vấn đề gì?</h3>



<p>Thị trường xem bóng đá online thì nhiều, nhưng phần lớn đều gặp những vấn đề khiến fan “cạn lời”: quảng cáo che kín màn hình, link die bất chợt, server lag đến mức xem bóng đá mà như đang xem slideshow, hay độ trễ đến cả phút so với truyền hình.</p>



<p>Đó là lý do Socolive ra đời: để tạo ra một nơi xem bóng đá <strong>đúng nghĩa</strong>, nơi bạn có thể yên tâm xem các trận cầu đỉnh cao mà không bị gián đoạn.</p>



<p>Một số bất cập mà Socolive muốn xóa bỏ cho fan:</p>



<ul class="wp-block-list">
<li>Quảng cáo pop-up bực mình giữa trận.</li>



<li>Link lỗi, link die ngay trước giờ bóng lăn.</li>



<li>Server yếu gây lag, đứng hình.</li>



<li>Hình ảnh mờ, chất lượng kém.</li>



<li>Delay quá lâu khiến mất cảm xúc.</li>
</ul>



<h3 class="wp-block-heading">Sứ mệnh của thương hiệu Socolive</h3>



<p>Sứ mệnh của Socolive không chỉ là phát trận đấu. Chúng tôi muốn tạo ra một “sân vận động trực tuyến” cho người hâm mộ Việt Nam – nơi mỗi cú sút, mỗi pha xử lý, mỗi khoảnh khắc cảm xúc đều được truyền tải trọn vẹn. Bóng đá là cảm xúc, và nhiệm vụ của Socolive là giữ trọn cảm xúc đó cho bạn, dù bạn đang ở đâu hay đang xem bằng thiết bị gì.</p>



<h2 class="wp-block-heading">Vì sao Socolive trở thành lựa chọn hàng đầu của fan bóng đá Việt Nam?</h2>



<p>Anh em mê bóng đá chọn Socolive không phải vì ngẫu nhiên. Đó là kết quả của một quá trình đầu tư nghiêm túc vào trải nghiệm người dùng, chất lượng stream và tính ổn định của hệ thống.</p>



<h3 class="wp-block-heading">Trực tiếp Full HD – mượt, nét, xem một lần là mê</h3>



<p>Hình ảnh luôn là linh hồn của bóng đá trực tuyến. Tại Socolive, bạn sẽ thấy ngay sự khác biệt khi hình ảnh sắc nét, chuyển động mượt mà và màu sắc trung thực. Không còn tình trạng vỡ hình hay lag mỗi khi bóng di chuyển nhanh. Cảm giác xem bóng đá vì thế cũng trọn vẹn hơn.</p>



<p>Những yếu tố làm nên chất lượng của Socolive gồm:</p>



<ul class="wp-block-list">
<li>Khung hình Full HD ổn định</li>



<li>Tốc độ khung hình cao, hạn chế blur</li>



<li>Chất lượng video tối ưu theo tốc độ mạng</li>



<li>Giảm delay tối đa, gần sát thời gian thực</li>
</ul>



<h3 class="wp-block-heading">Không quảng cáo che màn hình – xem bóng đá là để tận hưởng</h3>



<p>Không ai thích đang xem bóng mà quảng cáo nhảy ra đúng lúc bóng đến vòng cấm. Socolive hiểu điều này hơn ai hết, nên luôn cố gắng giữ màn hình ở trạng thái sạch nhất có thể. Tập trung trải nghiệm của fan bóng đá là ưu tiên số một, và đó cũng là điểm làm nên sự khác biệt của thương hiệu.</p>



<h3 class="wp-block-heading">Server mạnh – trận hot cũng không lo giật lag</h3>



<p>Những trận như MU – Liverpool, El Clasico hay C1 luôn thu hút lượng người xem khổng lồ. Nhiều trang thường “quỳ” đúng lúc cao trào, khiến anh em mất hứng. Socolive đầu tư vào hệ thống server riêng, cân tải tốt, tự động chuyển tuyến khi có dấu hiệu quá tải… để đảm bảo bạn xem mượt từ đầu đến cuối.</p>



<p>Sức mạnh hệ thống thể hiện qua:</p>



<ul class="wp-block-list">
<li>Khả năng chịu tải cao, đông người xem vẫn mượt</li>



<li>Công nghệ cân bằng tải thông minh</li>



<li>Nhiều tuyến dự phòng khi server chính quá tải</li>
</ul>



<h3 class="wp-block-heading">Hoàn toàn miễn phí – đúng tinh thần bóng đá Việt</h3>



<p>Fan bóng đá Việt Nam luôn có tinh thần “chia sẻ – kết nối”. Và Socolive cũng vậy: mọi thứ đều hoàn toàn miễn phí. Bạn không cần đăng ký, không cần nạp tiền, không bị giới hạn tính năng. Chỉ cần vào là xem.</p>



<h3 class="wp-block-heading">Xem bóng đá mọi nơi, trên mọi thiết bị</h3>



<p>Dù bạn đang nằm trên giường cầm điện thoại, đang ngồi trong quán cà phê với chiếc laptop, hay đang bật Smart TV để xem cùng bạn bè… Socolive đều hỗ trợ mượt mà. Chúng tôi tối ưu cho mọi thiết bị để bạn không bị bỏ lỡ bất kỳ trận đấu nào.</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://img.lightshot.app/uDGLV2eiS5mPdu4JamJeFQ.jpg" alt="Vì sao Socolive trở thành lựa chọn hàng đầu của fan bóng đá Việt Nam?"/><figcaption class="wp-element-caption">Vì sao Socolive trở thành lựa chọn hàng đầu của fan bóng đá Việt Nam?</figcaption></figure>



<h2 class="wp-block-heading">Socolive trực tiếp bóng đá đầy đủ ở các giải đấu lớn nhỏ</h2>



<p>Đối với người hâm mộ bóng đá, điều quan trọng nhất là có nơi để xem <strong>mọi trận đấu mình quan tâm</strong>, từ những trận tầm cỡ thế giới đến các giải quốc nội hay bóng đá trẻ. Socolive hiểu điều đó hơn ai hết, và vì vậy nền tảng luôn cố gắng mang đến danh sách giải đấu phong phú nhất có thể. Bạn yêu thích Premier League? Có. Bạn mê Champions League? Có. Bạn thích xem U23 Việt Nam hay đội tuyển nữ? Tất nhiên là có.</p>



<p>Socolive không bỏ sót bất kỳ giải đấu nào mà người hâm mộ Việt Nam quan tâm. Mỗi ngày, hệ thống sẽ cập nhật lịch thi đấu theo giờ Việt Nam, giúp fan dễ dàng theo dõi những trận cầu mình yêu thích mà không cần mất thời gian tìm kiếm.</p>



<p>Dưới đây là những hệ thống giải được Socolive trực tiếp đầy đủ và đều đặn:</p>



<h3 class="wp-block-heading">Ngoại hạng Anh (Premier League) – Giải đấu được xem nhiều nhất tại Việt Nam</h3>



<p>Nếu nói Premier League là “món ăn chính” của fan bóng đá Việt thì cũng chẳng sai. Tốc độ trận đấu nhanh, kịch tính cao, cạnh tranh khốc liệt và quy tụ toàn ngôi sao. Chính vì thế, Socolive luôn đảm bảo cập nhật sớm nhất lịch thi đấu, link trực tiếp, thông tin đội hình và phân tích trước trận.</p>



<p>Tại Socolive, các trận đấu Premier League luôn được ưu tiên chất lượng cao nhất vì đây là giải mà fan Việt quan tâm nhất.<br>Bạn có thể theo dõi đầy đủ các đội bóng như:</p>



<ul class="wp-block-list">
<li>Manchester United</li>



<li>Liverpool</li>



<li>Manchester City</li>



<li>Chelsea</li>



<li>Arsenal</li>



<li>Tottenham</li>
</ul>



<p>Và tất nhiên, tất cả đều được trực tiếp bằng chất lượng HD, ít delay và có bình luận tiếng Việt.</p>



<h3 class="wp-block-heading">Champions League, Europa League – nơi những trận cầu đỉnh cao diễn ra</h3>



<p>Nhắc tới Champions League là nhắc tới những đêm bóng đá rực lửa, nơi các đội bóng mạnh nhất châu Âu đối đầu nhau. Với Socolive, bạn sẽ luôn được xem những trận đấu đỉnh cao này một cách trọn vẹn nhất.</p>



<p>Trải nghiệm đặc trưng của Socolive ở C1 và C2:</p>



<ul class="wp-block-list">
<li>Hình ảnh sắc nét</li>



<li>Server ổn định, không lo lag</li>



<li>Lịch thi đấu cập nhật ngay sau khi UEFA công bố</li>



<li>Bình luận tiếng Việt đầy đủ</li>
</ul>



<p>Những đêm C1 luôn là “đặc sản” Socolive – và fan bóng đá Việt chắc chắn sẽ thích điều này.</p>



<h3 class="wp-block-heading">La Liga, Serie A, Bundesliga, Ligue 1 – Top các giải châu Âu luôn có mặt</h3>



<p>Không chỉ Premier League hay Champions League, Socolive còn trực tiếp đầy đủ những giải vô địch quốc gia hàng đầu thế giới. Điều này giúp fan theo dõi được hành trình của các siêu sao ở từng giải.</p>



<p>Một số điểm nổi bật:</p>



<ul class="wp-block-list">
<li><strong>La Liga:</strong> Messi đã rời đi nhưng Real và Barca vẫn đủ sức tạo nên hàng triệu cảm xúc mỗi tuần.</li>



<li><strong>Serie A:</strong> Những trận derby rực lửa như Inter – AC Milan luôn thu hút fan Việt.</li>



<li><strong>Bundesliga:</strong> Giải đấu đề cao tốc độ, thích hợp cho những ai thích trận đấu nhiều bàn thắng.</li>



<li><strong>Ligue 1:</strong> Nơi từng chứng kiến PSG của Mbappé, Neymar, Messi khuynh đảo.</li>
</ul>



<p>Nhìn chung, bạn hâm mộ giải nào – Socolive đều có link để phục vụ.</p>



<h3 class="wp-block-heading">V-League, Cúp Quốc Gia – giải bóng đá Việt Nam không bao giờ thiếu</h3>



<p>Bên cạnh những sân chơi quốc tế, Socolive luôn dành một phần sức mạnh hệ thống để trực tiếp các giải trong nước, đặc biệt là:</p>



<ul class="wp-block-list">
<li>V-League</li>



<li>Cúp Quốc Gia</li>



<li>Giải trẻ U21, U19</li>



<li>Giải nữ quốc gia</li>
</ul>



<p>Những trận đấu của CLB Hà Nội, Viettel, HAGL, Thanh Hóa, CAHN… luôn được cập nhật đầy đủ. Fan bóng đá Việt Nam thường rất quan tâm đến sự phát triển của bóng đá nước nhà, và Socolive muốn đồng hành cùng tinh thần đó.</p>



<h3 class="wp-block-heading">AFF Cup, Asian Cup, SEA Games – nơi trái tim fan Việt đập nhanh nhất</h3>



<p>Socolive luôn ưu tiên các trận đấu của đội tuyển Việt Nam, không chỉ ở cấp độ ĐTQG mà cả U23, U20 hay đội tuyển nữ. Đây là những giải đấu mà người hâm mộ Việt dồn trọn cảm xúc – từ những chiến thắng nghẹt thở đến những trận cầu lịch sử.</p>



<p>Bạn có thể xem tại Socolive:</p>



<ul class="wp-block-list">
<li>AFF Cup</li>



<li>Asian Cup</li>



<li>SEA Games</li>



<li>Vòng loại World Cup</li>



<li>U23 châu Á</li>



<li>U20 World Cup</li>
</ul>



<p>Những trận đấu này luôn thu hút lượng người xem khổng lồ, nhưng với hệ thống của Socolive, bạn vẫn có thể xem mượt từ đầu đến cuối.</p>



<h3 class="wp-block-heading">Giao hữu quốc tế, World Cup, Euro – những sân chơi lớn nhất hành tinh</h3>



<p>Dù chỉ là giao hữu, Socolive vẫn cập nhật đầy đủ cho những người thích theo dõi phong độ của các đội tuyển lớn. Khi đến World Cup hay Euro, mọi thứ được nâng lên một cấp độ hoàn toàn khác.</p>



<p>Fan Việt xem các trận:</p>



<ul class="wp-block-list">
<li>Brazil</li>



<li>Argentina</li>



<li>Pháp</li>



<li>Đức</li>



<li>Tây Ban Nha</li>



<li>Bồ Đào Nha</li>
</ul>



<p>Đều có thể yên tâm vì Socolive luôn có link trực tiếp chất lượng cao, bình luận tiếng Việt và cập nhật sớm.</p>



<h3 class="wp-block-heading">Bóng đá nữ – bóng đá trẻ – nội dung đầy đủ cho mọi fan</h3>



<p>Nhiều fan không chỉ theo dõi bóng đá nam mà còn quan tâm đến bóng đá nữ và các đội trẻ. Socolive đảm bảo có link xem những trận này, từ giải khu vực đến giải thế giới.</p>



<p>Các nội dung Socolive luôn cập nhật:</p>



<ul class="wp-block-list">
<li>World Cup nữ</li>



<li>Giải nữ châu Á</li>



<li>Giải U17, U20</li>



<li>Giải trẻ các CLB châu Âu</li>
</ul>



<p>Nhờ đó, fan bóng đá có thể theo dõi toàn bộ hệ sinh thái bóng đá chứ không bị giới hạn trong một vài giải.</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://img.lightshot.app/X7aYKqPERoKW_s_gi6_OUQ.jpg" alt="Mục tiêu phát triển của Socolive TV trong tương lai"/><figcaption class="wp-element-caption">Mục tiêu phát triển của Socolive TV trong tương lai</figcaption></figure>



<h2 class="wp-block-heading">Tính năng nổi bật khi xem bóng đá tại Socolive</h2>



<p>Để trở thành nền tảng xem bóng đá được yêu thích, chỉ có “có link xem” thôi là chưa đủ. Socolive đầu tư rất mạnh vào trải nghiệm tổng thể của người dùng – từ tốc độ, giao diện, chất lượng truyền tải đến cách hiển thị thông tin. Tất cả đều được xây dựng để đảm bảo rằng bất kỳ fan bóng đá nào, dù là xem trên điện thoại hay TV, cũng đều cảm thấy thoải mái, dễ dùng và hài lòng.</p>



<p>Dưới đây là những tính năng giúp Socolive khác biệt hẳn so với những nền tảng xem bóng đá trực tuyến thông thường.</p>



<h3 class="wp-block-heading">Giao diện tối ưu cho fan bóng đá – đơn giản, dễ dùng và cực nhanh</h3>



<p>Một trang xem bóng đá tốt phải là trang để fan “vào là xem”, không phải loay hoay tìm nút, không phải lướt cả cây số mới tới trận mình muốn xem. Vì vậy Socolive thiết kế giao diện theo đúng thói quen của người dùng Việt: rõ ràng, trực quan và tập trung vào trận đấu.</p>



<p>Trải nghiệm chung của fan khi vào Socolive thường là:</p>



<ul class="wp-block-list">
<li>Giao diện nền tối dễ nhìn, phù hợp xem ban đêm</li>



<li>Các trận hot được đặt ngay đầu trang</li>



<li>Thời gian bắt đầu trận được hiển thị rõ ràng</li>



<li>Dễ dàng chuyển đổi giữa “Lịch thi đấu – Trực tiếp – Kết quả – Highlight”</li>
</ul>



<p>Mọi thứ đều được làm để anh em vào là xem được ngay, không rườm rà, không gây khó chịu.</p>



<h3 class="wp-block-heading">Không quảng cáo che màn hình – giữ trọn cảm xúc trận đấu</h3>



<p>Một trong những điều fan bóng đá ghét nhất khi xem online là quảng cáo che ngang che dọc màn hình đúng lúc bóng tới tình huống nguy hiểm. Socolive hiểu điều này, vì chính chúng tôi cũng là fan bóng đá. Vì vậy, trải nghiệm xem trên Socolive luôn được ưu tiên sạch nhất có thể.</p>



<p>Điều fan yêu thích ở trải nghiệm này là:</p>



<ul class="wp-block-list">
<li>Không quảng cáo che giữa màn hình</li>



<li>Không pop-up bật lên liên tục</li>



<li>Không banner dày đặc khiến trang nặng</li>



<li>Mọi thứ đều hướng đến trận đấu – không gì khác</li>
</ul>



<p>Nhờ sự tối giản này, câu chuyện xem bóng đá của bạn trở nên liền mạch, không bị phá cảm xúc.</p>



<h3 class="wp-block-heading">Server siêu mạnh – trận hot cũng không lo nghẽn</h3>



<p>Có những trận mà cả thế giới dán mắt vào màn hình: El Clasico, Derby nước Anh, Derby Milano, chung kết C1, trận ĐT Việt Nam đá vòng loại… Lượng người xem tăng đột biến có thể khiến nhiều website “xỉu” ngay phút đầu tiên. Nhưng tại Socolive, mọi trận đấu đều được chuẩn bị trước bằng hệ thống server mạnh mẽ.</p>



<p>Những điểm giúp Socolive luôn đứng vững trong những trận đông người xem:</p>



<ul class="wp-block-list">
<li>Server cân tải tự động khi tỷ lệ người xem tăng mạnh</li>



<li>Tối ưu đường truyền để hạn chế lag và đứng hình</li>



<li>Hệ thống giám sát 24/7, xử lý sự cố ngay lập tức</li>



<li>Luôn có server phụ để chuyển đổi khi cần thiết</li>
</ul>



<p>Fan thường nói vui rằng “trận đâu đông, Socolive càng mượt”, và đó cũng chính là điều chúng tôi tự hào.</p>



<h3 class="wp-block-heading">Có nhiều chế độ chất lượng video – phù hợp mọi tốc độ mạng</h3>



<p>Không phải ai cũng có mạng Internet ổn định, đặc biệt khi xem bằng 4G/5G hoặc ở những nơi wifi yếu. Vì vậy Socolive cung cấp nhiều chế độ video khác nhau để fan tự lựa chọn sao cho phù hợp với đường truyền của mình.</p>



<p>Fan có thể chọn:</p>



<ul class="wp-block-list">
<li>480p siêu nhẹ</li>



<li>720p ổn định</li>



<li>1080p Full HD khi mạng mạnh</li>



<li>Auto Mode (tự động tối ưu theo tốc độ mạng)</li>
</ul>



<p>Nhờ đó, ngay cả khi bạn không ở nơi có Internet tốt, bạn vẫn không bị bỏ lỡ trận đấu.</p>



<h3 class="wp-block-heading">Có bình luận viên tiếng Việt – tăng cảm xúc khi xem</h3>



<p>Nhiều trận đấu quốc tế thường chỉ có bình luận tiếng Anh hoặc tiếng nước ngoài, điều này đôi khi khiến fan Việt cảm thấy “thiếu lửa”. Socolive khắc phục điều này bằng việc bổ sung đường tiếng Việt cho nhiều trận đấu, giúp anh em cảm nhận trận đấu trọn vẹn hơn, dễ theo dõi hơn và sống cùng nhịp điệu của từng pha bóng.</p>



<p>Điều này đặc biệt được ưa thích ở:</p>



<ul class="wp-block-list">
<li>Các trận Premier League</li>



<li>Champions League</li>



<li>La Liga</li>



<li>Các trận đấu của ĐT Việt Nam</li>



<li>AFF Cup – SEA Games – Asian Cup</li>
</ul>



<p>Bình luận tiếng Việt là phần không thể thiếu để trận đấu thêm hấp dẫn.</p>



<h3 class="wp-block-heading">Kho highlight và video bàn thắng cập nhật nhanh</h3>



<p>Không phải lúc nào fan cũng xem được trận đấu trọn vẹn từ đầu tới cuối. Vì vậy Socolive luôn cập nhật highlight nhanh nhất có thể sau khi trận đấu kết thúc. Fan chỉ cần vài phút là đã có thể xem lại những tình huống đáng chú ý, bàn thắng, thẻ đỏ, pha cứu thua…</p>



<p>Tốc độ cập nhật highlight của Socolive thường được người xem khen vì:</p>



<ul class="wp-block-list">
<li>Nhanh, có ngay sau trận</li>



<li>Đầy đủ các pha đáng chú ý</li>



<li>Góc quay rõ ràng, sắc nét</li>



<li>Có thể xem lại bao nhiêu lần tùy thích</li>
</ul>



<p>Fan bận rộn cũng không sợ bỏ lỡ khoảnh khắc quan trọng.</p>



<h3 class="wp-block-heading">Tính năng gợi ý trận đấu hot – ưu tiên trận “đáng xem nhất”</h3>



<p>Nhiều fan bóng đá vào xem mà không biết tối nay có trận gì hay, đội nào đá, giờ nào đá. Socolive dùng hệ thống gợi ý trận hot để giải quyết vấn đề đó. Hệ thống này dựa trên số người quan tâm, lịch sử các trận nổi bật và độ hấp dẫn của giải đấu.</p>



<p>Nhờ tính năng này:</p>



<ul class="wp-block-list">
<li>Fan luôn thấy trận hay nhất ở ngay đầu trang</li>



<li>Không phải mất thời gian tìm</li>



<li>Không lo bỏ lỡ các trận quan trọng của MU, Liverpool, Real, Barca, Việt Nam…</li>
</ul>



<p>Đây là một điểm nhỏ nhưng cực kỳ tiện lợi, giúp trải nghiệm xem bóng đá trở nên thông minh hơn.</p>



<h3 class="wp-block-heading">Chat trực tiếp trong trận – không khí như đang xem chung</h3>



<p>Xem bóng đá mà không có người bình luận cùng thì mất vui đi rất nhiều. Vì vậy Socolive cung cấp tính năng chat trực tiếp ngay dưới trận đấu, nơi fan có thể chia sẻ suy nghĩ, bàn luận pha bóng, hoặc cùng nhau “lên tinh thần” cho đội mình yêu thích.</p>



<p>Chat trực tiếp tạo ra:</p>



<ul class="wp-block-list">
<li>Không khí sôi động</li>



<li>Cảm giác cộng đồng</li>



<li>Tương tác liên tục trong suốt trận đấu</li>
</ul>



<p>Nó giống như bạn đang xem bóng đá ở quán cà phê với hàng chục người bên cạnh – nhưng ngay trên màn hình của chính mình.</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://img.lightshot.app/0MgoxRsqQRumi3ge7p46Rg.jpg" alt=""/><figcaption class="wp-element-caption">Lý do Socolive TV luôn là lựa chọn số 1 của người hâm mộ</figcaption></figure>



<h2 class="wp-block-heading">Hướng dẫn xem trực tiếp bóng đá trên Socolive</h2>



<p>Socolive được tối ưu để ai cũng có thể xem bóng đá dễ dàng, dù bạn là người am hiểu công nghệ hay chỉ đơn giản muốn mở trận đấu mình yêu thích. Hệ thống được thiết kế theo nguyên tắc “thao tác càng ít – trải nghiệm càng nhanh”, giúp fan không tốn thời gian loay hoay tìm trận. Chỉ cần vài bước đơn giản, bạn đã có thể xem bóng đá với chất lượng mượt mà trên bất kỳ thiết bị nào.</p>



<h3 class="wp-block-heading">Cách xem Socolive trên điện thoại (Android / iPhone)</h3>



<p>Điện thoại là thiết bị được fan bóng đá Việt Nam sử dụng nhiều nhất, từ xem tại nhà đến xem khi đang đi đường, khi ở quán cà phê hay thậm chí đang nghỉ trưa. Socolive vì vậy được tối ưu rất tốt cho màn hình nhỏ.</p>



<p>Cách xem rất đơn giản:</p>



<ol class="wp-block-list">
<li>Truy cập vào website Socolive bằng trình duyệt điện thoại.</li>



<li>Chọn mục “Trực tiếp” hoặc “Lịch thi đấu” để xem danh sách trận trong ngày.</li>



<li>Nhấn vào trận bạn muốn xem.</li>



<li>Chọn chất lượng 480p – 720p – 1080p tùy tốc độ mạng.</li>
</ol>



<p>Socolive tự điều chỉnh giao diện cho phù hợp với điện thoại, giúp các nút bấm rõ ràng, video load nhanh và không bị lỗi bố cục như nhiều trang xem bóng đá khác.</p>



<p>Một số ưu điểm khi xem bằng điện thoại:</p>



<ul class="wp-block-list">
<li>Load nhanh, ít lag</li>



<li>Tiết kiệm băng thông, tối ưu cho mạng 4G/5G</li>



<li>Xem được ở mọi nơi</li>



<li>Không cần ứng dụng, không cần cài đặt</li>
</ul>



<h3 class="wp-block-heading">Cách xem Socolive trên PC hoặc Laptop</h3>



<p>Xem trên máy tính vẫn luôn là lựa chọn số một với những ai muốn thưởng thức trận đấu trên màn hình lớn, bàn phím dễ điều khiển và âm thanh rộng hơn. Phiên bản PC của Socolive được thiết kế mượt, gọn và thân thiện.</p>



<p>Các bước xem trên máy tính:</p>



<ol class="wp-block-list">
<li>Mở trình duyệt Chrome, Cốc Cốc hoặc Firefox.</li>



<li>Truy cập trang Socolive.</li>



<li>Tìm trận bạn muốn xem trên trang chủ hoặc mục “Trực tiếp”.</li>



<li>Nhấn vào video và chờ vài giây là trận đấu bắt đầu.</li>



<li>Nếu muốn xem full màn hình, chỉ cần nhấn biểu tượng “Full Screen”.</li>
</ol>



<p>Những ưu điểm khi xem bằng PC:</p>



<ul class="wp-block-list">
<li>Khung hình rộng hơn, dễ theo dõi từng pha bóng</li>



<li>Hình ảnh ổn định, hiển thị chính xác màu sắc</li>



<li>Trải nghiệm âm thanh lớn, rõ ràng</li>



<li>Dễ vừa xem vừa chat cùng bạn bè hoặc theo dõi tỷ lệ kèo ở tab khác</li>
</ul>



<h3 class="wp-block-heading">Cách xem Socolive trên Smart TV</h3>



<p>Nếu bạn muốn xem bóng đá theo cách “đã nhất”, Smart TV chắc chắn là lựa chọn hàng đầu. Những trận cầu đỉnh cao như C1, Ngoại hạng Anh hay trận của đội tuyển Việt Nam sẽ hấp dẫn hơn rất nhiều khi xem trên màn hình lớn.</p>



<p>Cách xem rất đơn giản:</p>



<ol class="wp-block-list">
<li>Mở trình duyệt web có sẵn trên Smart TV (Chrome, Browser, Puffin…).</li>



<li>Nhập địa chỉ website Socolive.</li>



<li>Chọn trận đấu bạn muốn xem.</li>



<li>Nhấn “Full Screen” để tận hưởng hình ảnh lớn nhất.</li>
</ol>



<p>Nếu TV không có trình duyệt, bạn có thể dùng tính năng <strong>Cast / AirPlay</strong> để chiếu từ điện thoại lên TV.<br>Ưu điểm khi xem trên TV:</p>



<ul class="wp-block-list">
<li>Màn hình lớn, trải nghiệm như đang ở quán cà phê</li>



<li>Âm thanh sống động hơn</li>



<li>Chất lượng hình ảnh rõ nét</li>



<li>Phù hợp xem cùng bạn bè hoặc gia đình</li>
</ul>



<h3 class="wp-block-heading">Cách xử lý khi bị lag hoặc bị chậm</h3>



<p>Mặc dù Socolive luôn tối ưu để hạn chế tối đa lag, nhưng đôi khi đường truyền Internet yếu vẫn khiến fan gặp khó khăn. Đừng lo, bạn có thể xử lý nhanh bằng vài bước đơn giản.</p>



<p>Một số cách khắc phục hiệu quả:</p>



<ul class="wp-block-list">
<li><strong>Chuyển chất lượng video xuống 720p hoặc 480p</strong> nếu đang dùng 4G/5G.</li>



<li><strong>Tắt các ứng dụng nền</strong> như TikTok, Youtube, Messenger để tăng tốc mạng.</li>



<li><strong>Đổi sang server dự phòng</strong> nếu server chính đang quá tải.</li>



<li><strong>Khởi động lại router wifi</strong> nếu mạng trong nhà chậm.</li>



<li><strong>Chuyển sang kết nối khác</strong> (vd: đổi từ wifi sang 4G).</li>
</ul>



<p>Những mẹo nhỏ này thường giúp trận đấu trở lại mượt chỉ sau vài giây.</p>



<h3 class="wp-block-heading">Mẹo để xem bóng đá trên Socolive “đã nhất”</h3>



<p>Để tận hưởng trận đấu trọn vẹn, fan có thể áp dụng một số mẹo nhỏ nhưng rất hữu ích sau:</p>



<ul class="wp-block-list">
<li>Dùng trình duyệt Chrome hoặc Cốc Cốc để tối ưu tốc độ.</li>



<li>Nếu xem bằng điện thoại, đặt máy ở chế độ ngang để hình rộng hơn.</li>



<li>Bật chế độ “Không làm phiền” để tránh tin nhắn che màn hình.</li>



<li>Dùng tai nghe khi xem một mình để tận hưởng âm thanh chân thực.</li>



<li>Chọn xem ở TV nếu là trận quan trọng như C1, El Clasico, AFF Cup…</li>
</ul>



<p>Socolive luôn cố gắng mang đến trải nghiệm tốt nhất cho fan, và chỉ cần vài mẹo nhỏ như trên, bạn sẽ cảm thấy trận đấu sống động hơn rất nhiều.</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://img.lightshot.app/NHbnpA12T9u3Bpj0tGGlsw.jpg" alt=""/><figcaption class="wp-element-caption">Socolive TV mang đến mọi trận đấu miễn phí</figcaption></figure>



<h2 class="wp-block-heading">Những chuyên mục hữu ích khác trên Socolive</h2>



<p>Socolive không chỉ là nơi để xem bóng đá trực tiếp. Đối với người hâm mộ, xem bóng đá không chỉ dừng lại ở 90 phút của trận đấu, mà còn là hành trình theo dõi lịch thi đấu, cập nhật kết quả, xem bảng xếp hạng, đọc nhận định và nắm bắt tin tức mới nhất mỗi ngày. Hiểu rất rõ điều đó, Socolive xây dựng một hệ thống chuyên mục phong phú, giúp fan có đầy đủ thông tin trước – trong – sau trận đấu.</p>



<p>Dưới đây là những chuyên mục cực kỳ hữu ích mà fan Việt sử dụng mỗi ngày trên Socolive.</p>



<h3 class="wp-block-heading">Lịch thi đấu – cập nhật realtime, rõ ràng từng giờ</h3>



<p>Với fan bóng đá, việc quan trọng đầu tiên mỗi ngày là biết <strong>tối nay có trận gì</strong>, <strong>đội nào đá</strong>, <strong>đá lúc mấy giờ</strong>, <strong>truyền hình trực tiếp ở đâu</strong>. Vì vậy, Socolive xây dựng một chuyên mục <strong><a href="/lich-thi-dau">lịch thi đấu</a></strong> cực kỳ trực quan.</p>



<p>Khi truy cập vào mục Lịch thi đấu, bạn sẽ thấy:</p>



<ul class="wp-block-list">
<li>Lịch được cập nhật theo giờ Việt Nam</li>



<li>Chia theo từng giải đấu rõ ràng</li>



<li>Hiển thị trạng thái trận: đã đá – đang đá – sắp đá</li>



<li>Có luôn link trực tiếp để bạn bấm xem ngay</li>
</ul>



<p>Fan thường nói rằng “vào Socolive là biết tối nay có gì để xem”, và điều đó đúng – vì lịch thi đấu luôn chạy realtime, liên tục cập nhật từ hệ thống quốc tế.</p>



<h3 class="wp-block-heading">Bảng xếp hạng – theo dõi thứ hạng từng đội một cách dễ dàng</h3>



<p>Đi cùng lịch thi đấu là <strong><a href="/bang-xep-hang">bảng xếp hạng</a></strong> – nơi fan kiểm tra phong độ, điểm số và vị trí của đội mình yêu thích. Không quá phức tạp, không làm rối mắt, bảng xếp hạng trên Socolive được thiết kế đơn giản nhưng đầy đủ thông tin.</p>



<p>Fan có thể xem:</p>



<ul class="wp-block-list">
<li>Số trận đã chơi</li>



<li>Điểm số hiện tại</li>



<li>Hiệu số</li>



<li>Số trận thắng – hòa – thua</li>



<li>Phong độ 5 trận gần nhất</li>
</ul>



<p>Dù bạn theo dõi Premier League, La Liga, Bundesliga hay Serie A, bảng xếp hạng luôn có sẵn và được cập nhật theo từng vòng đấu. Chỉ cần 1 cú nhấp chuột, bạn biết ngay đội mình đang đứng ở đâu.</p>



<h3 class="wp-block-heading">Kết quả bóng đá – đầy đủ, chính xác, cập nhật liên tục</h3>



<p>Khi bạn không xem được trận đấu, thứ bạn cần nhất chính là <strong><a href="/ket-qua-bong-da">kết quả bóng đá</a></strong>. Socolive hiểu điều đó, nên chuyên mục Kết quả bóng đá luôn cập nhật liên tục, chính xác sau mỗi trận.</p>



<p>Điểm fan thích nhất ở mục Kết quả là:</p>



<ul class="wp-block-list">
<li>Có đầy đủ tỷ số</li>



<li>Có mốc thời gian ghi bàn</li>



<li>Có danh sách cầu thủ ghi bàn, kiến tạo</li>



<li>Có thẻ đỏ, thẻ vàng và thống kê cơ bản</li>
</ul>



<p>Đặc biệt, toàn bộ kết quả của các giải lớn như C1, Premier League, La Liga, Bundesliga, Ligue 1, Serie A, V-League… đều được cập nhật rất nhanh, gần như ngay sau tiếng còi mãn cuộc.</p>



<h3 class="wp-block-heading">Nhận định bóng đá – góc nhìn chuyên sâu trước trận</h3>



<p>Đối với nhiều fan bóng đá, đặc biệt là những người thích phân tích, thích đọc <strong><a href="/nhan-dinh">nhận định</a></strong> trước khi xem, Socolive có chuyên mục <strong>Nhận định – Dự đoán</strong> được viết theo cách dễ hiểu nhưng vẫn đầy đủ thông tin quan trọng.</p>



<p>Các nội dung thường xuất hiện trong bài nhận định bao gồm:</p>



<ul class="wp-block-list">
<li>Phong độ hiện tại của 2 đội</li>



<li>Lịch sử đối đầu</li>



<li>Tình hình lực lượng, chấn thương</li>



<li>Phong độ hàng công – hàng thủ</li>



<li>Xu hướng chiến thuật</li>



<li>Dự đoán tỷ số và diễn biến trận đấu</li>
</ul>



<p>Những bài nhận định này giúp fan có cái nhìn tổng quan trước khi xem trận đấu, hoặc đơn giản là hiểu hơn về bối cảnh trận cho tăng phần hấp dẫn.</p>



<h3 class="wp-block-heading">Tin tức bóng đá – nhanh, nóng, chọn lọc</h3>



<p>Bóng đá thay đổi từng ngày, từ chuyển nhượng, đội hình, phát biểu của HLV, đến những tin tức bên lề hấp dẫn. Socolive có chuyên mục Tin tức cập nhật liên tục để fan theo dõi tất cả diễn biến đó mà không cần phải tìm ở nhiều nơi.</p>



<p>Mục Tin tức trên Socolive mang lại:</p>



<ul class="wp-block-list">
<li>Tin nhanh về các giải lớn</li>



<li>Diễn biến nóng ở Premier League, C1, La Liga…</li>



<li>Các thông tin về Đội tuyển Việt Nam</li>



<li>Chuyển nhượng cầu thủ</li>



<li>Phân tích chiến thuật, đánh giá phong độ đội bóng</li>



<li>Những câu chuyện thú vị bên ngoài sân cỏ</li>
</ul>



<p>Tin tức được trình bày ngắn gọn, dễ đọc và tập trung vào những điều fan Việt quan tâm – không lan man và không dài dòng.</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://img.lightshot.app/HxMkqjmwT5Op1XQ_NYivTQ.jpg" alt="Socolive TV sở hữu dàn BLV bóng đá chuyên nghiệp, hài hước"/><figcaption class="wp-element-caption">Socolive TV sở hữu dàn BLV bóng đá chuyên nghiệp, hài hước</figcaption></figure>



<h2 class="wp-block-heading"><strong>Câu hỏi thường gặp (FAQ) khi xem bóng đá trên Socolive</strong></h2>



<p>Mặc dù Socolive rất dễ sử dụng, nhưng vẫn có một số câu hỏi mà fan bóng đá thường thắc mắc khi truy cập lần đầu. Dưới đây là những câu hỏi được hỏi nhiều nhất – đi kèm giải đáp rõ ràng, dễ hiểu để bạn có thể yên tâm sử dụng nền tảng.</p>



<h3 class="wp-block-heading">Socolive có miễn phí hoàn toàn không?</h3>



<p>Có. Toàn bộ nội dung trên Socolive đều <strong>miễn phí 100%</strong>. Bạn không cần đăng ký, không cần nạp tiền, không bị khóa tính năng. Chỉ cần truy cập website là có thể xem bất kỳ trận đấu nào, từ Premier League, Champions League đến AFF Cup hay các trận của đội tuyển Việt Nam.</p>



<p>Socolive tin rằng bóng đá là môn thể thao dành cho tất cả, và việc xem bóng đá không nên bị rào cản bởi chi phí.</p>



<h3 class="wp-block-heading">Tại sao đôi khi tôi vào link mà không xem được?</h3>



<p>Có một số thời điểm lượng người xem tăng đột biến – nhất là khi có trận hot. Mặc dù hệ thống server của Socolive rất mạnh, đôi lúc fan có thể gặp hiện tượng load chậm hoặc không truy cập được ngay.</p>



<p>Cách xử lý nhanh:</p>



<ul class="wp-block-list">
<li>Tải lại trang 1–2 lần</li>



<li>Chuyển sang server 2 hoặc server 3</li>



<li>Tắt bớt ứng dụng chạy nền</li>



<li>Thử mở bằng trình duyệt khác (Chrome, Cốc Cốc…)</li>
</ul>



<p>Nếu vẫn chưa được, bạn có thể chờ vài chục giây để hệ thống giảm tải – sau đó vào lại sẽ mượt.</p>



<h3 class="wp-block-heading">Socolive có bình luận tiếng Việt không?</h3>



<p>Có. Nhiều trận đấu trên Socolive có bình luận viên tiếng Việt, đặc biệt là:</p>



<ul class="wp-block-list">
<li>Premier League</li>



<li>UEFA Champions League</li>



<li>La Liga, Serie A</li>



<li>Trận của ĐT Việt Nam</li>



<li>AFF Cup, Asian Cup, SEA Games</li>
</ul>



<p>Nếu trận bạn đang xem không có tiếng Việt, thường sẽ có ít nhất 1 đường tiếng Anh hoặc tiếng gốc của giải.</p>



<h3 class="wp-block-heading">Socolive có ứng dụng app không?</h3>



<p>Hiện tại, Socolive <strong>không bắt buộc sử dụng app</strong> để xem. Tất cả đều được tối ưu trên <strong>trình duyệt web</strong> để fan xem nhanh – gọn – nhẹ, không phải tải gì cả.</p>



<p>Tuy nhiên, trong tương lai gần, Socolive sẽ ra mắt ứng dụng chính thức để nâng cao trải nghiệm trên điện thoại và TV.</p>



<h3 class="wp-block-heading">Tôi bị lag khi xem, có phải do Socolive không?</h3>



<p>Trong phần lớn trường hợp, lag đến từ tốc độ mạng của thiết bị người dùng. Tuy nhiên, để đảm bảo trải nghiệm tốt nhất, bạn có thể:</p>



<ul class="wp-block-list">
<li>Chọn chất lượng video phù hợp (720p hoặc 480p)</li>



<li>Đổi sang server dự phòng</li>



<li>Chuyển mạng wifi hoặc dùng 4G/5G</li>



<li>Tắt VPN nếu đang bật</li>
</ul>



<p>Hệ thống của Socolive luôn được tối ưu để hạn chế lag tối đa, đặc biệt trong các trận đông người xem.</p>



<h3 class="wp-block-heading">Socolive có trực tiếp đầy đủ tất cả giải không?</h3>



<p>Có. Từ các giải hàng đầu châu Âu, giải quốc nội, giải châu Á đến bóng đá trẻ và bóng đá nữ. Bạn là fan của giải nào – Socolive đều có link để bạn xem.</p>



<p>Những giải được tìm kiếm nhiều nhất tại Socolive gồm:</p>



<ul class="wp-block-list">
<li>Premier League</li>



<li>UEFA Champions League</li>



<li>La Liga, Serie A, Bundesliga</li>



<li>Ligue 1</li>



<li>V-League</li>



<li>ĐT Việt Nam ở tất cả giải đấu</li>



<li>Euro, World Cup</li>
</ul>



<figure class="wp-block-image size-large"><img decoding="async" src="https://img.lightshot.app/L9BRCmKLSFKlexou-JQMPA.jpg" alt="Socolive TV sở hữu nhiều chuyên mục đặc biệt, chất lượng"/><figcaption class="wp-element-caption">Socolive TV sở hữu nhiều chuyên mục đặc biệt, chất lượng</figcaption></figure>



<h2 class="wp-block-heading">Kết luận</h2>



<p>Socolive không chỉ đơn thuần là một nền tảng xem bóng đá. Đó là một “sân vận động trực tuyến”, nơi hàng triệu fan bóng đá Việt Nam gặp nhau mỗi ngày để theo dõi những trận đấu đỉnh cao. Chúng tôi xây dựng Socolive dựa trên một mục tiêu rất rõ: <strong>mang đến cho người hâm mộ một trải nghiệm xem bóng đá mượt – nét – nhanh – miễn phí và không bị làm phiền bởi quảng cáo</strong>.</p>



<p>Ở Socolive, mỗi trận đấu không chỉ là 90 phút – mà là từng khoảnh khắc cảm xúc được truyền tải chân thực: từ cú sút xa cháy lưới, pha cứu thua xuất thần, đến tiếng reo hò đầy cảm xúc của fan Việt. Chúng tôi muốn bạn cảm nhận bóng đá theo cách trọn vẹn nhất, dù bạn đang ở nhà, ở quán cà phê hay đang di chuyển ngoài đường.</p>



<p>Socolive sẽ tiếp tục phát triển mạnh hơn, ổn định hơn và đầy đủ hơn để trở thành lựa chọn số một của cộng đồng fan bóng đá Việt Nam. Và dù bạn là fan MU, Liverpool, Real, Barca hay là người yêu đội tuyển Việt Nam – Socolive luôn sẵn sàng đồng hành cùng bạn trong mọi trận đấu.</p>
          </div>
        </div>
      </div>
    </div>
  </div>
</section>
    </main>
<!-- Footer -->
    <!-- <footer class="footer">
      <div class="container">
        <div class="footer__content">
          <p style="font-size: 14px">
            Bản quyền bởi
            <a href="#"><span class="text-primary">CakhiaTV</span></a> - All
            rights reserved
          </p>
        </div>
      </div>
    </footer> -->
    
<footer style="background-color: #111; color: #fff; text-align: center; padding: 30px 15px;">
    <div style="max-width: 1280px; margin: 0 auto">
    <div class="footer-logo">
        <img src="/wp-content/uploads/2025/07/logo-socolive.png" alt="Socolive TV" style="vertical-align: middle; height: 40px;">
    </div>
  
    <p class="footer-descript">
        <a href="/"><strong style="color: #f7c700;">Socolive</strong></a> phát bóng đá trực tuyến miễn phí full HD tốc độ cao. Xem trực tiếp bóng đá Socolive TV hôm nay tại giải đấu Ngoại Hạng Anh, Euro,... cùng đội ngũ BLV chuyên nghiệp, bao gồm BLV Tap, BLV No Name, BLV Leo,...
        </p>
        
        <div id="0fBdTp" style="text-align:center"></div>
        
  <nav style="margin: 20px 0;">
    <a href="/gioi-thieu" class="footer-nav-text" style="color: #f7c700; margin: 0 10px; font-weight: bold;">VỀ CHÚNG TÔI</a>
    <a href="/chinh-sach-bao-mat"class="footer-nav-text" style="color: #f7c700; margin: 0 10px; font-weight: bold;">CHÍNH SÁCH</a>
    <a href="/dieu-khoan-su-dung"class="footer-nav-text" style="color: #f7c700; margin: 0 10px; font-weight: bold;">ĐIỀU KHOẢN</a>
    <a href="/lien-he"class="footer-nav-text" style="color: #f7c700; margin: 0 10px; font-weight: bold;">LIÊN HỆ</a>
    <a href="/ban-quyen"class="footer-nav-text" style="color: #f7c700; margin: 0 10px; font-weight: bold;">BẢN QUYỀN</a>
    <a href="/mien-tru-trach-nhiem"class="footer-nav-text" style="color: #f7c700; margin: 0 10px; font-weight: bold;">MIỄN TRỪ TRÁCH NHIỆM</a>
    <a href="#"class="footer-nav-text" style="color: #f7c700; margin: 0 10px; font-weight: bold;">TUYỂN DỤNG</a>
    <a href="#"class="footer-nav-text" style="color: #f7c700; margin: 0 10px; font-weight: bold;">SITEMAP</a>
  </nav>

  <p class="footer-text">Doanh nghiệp: Socolive TV</p>
  <p class="footer-text">Chịu trách nhiệm nội dung: <a href="/author/leminhhieu"><span style="color: #f7c700;">Lê Minh Hiếu</span></a></p>
  <p class="footer-text">Số điện thoại: 09589864211</p>
  <p class="footer-text">Email: [email protected]</p>
  <p class="footer-text">Địa chỉ: <a href="https://maps.app.goo.gl/UL4tqs1Ufy2W57b89" target="_blank" rel="nofollow"><span style="color: #f7c700;">106 Đ. số 14, Bình Hưng Hoà A, Bình Tân, Thành phố Hồ Chí Minh, Việt Nam</span></a></p>
  <p class="footer-text">Hoạt động: 00:00–23:59 (hằng ngày)</p>

  <p style="margin-top: 15px;">Hashtag: #socolive #socolivetv #tructiepbongda #xembongdatructiep #xembongdatructuyen</p>

  <div style="margin-top: 15px;">
    <a href="#"><img src="https://cdn.onlive.io/wp-content/wp-content/uploads/2025/06/icon-facebook.webp" alt="Facebook" style="width: 24px; margin: 0 5px;"></a>
    <a href="#" rel="nofollow" target="_blank"><img src="https://cdn.onlive.io/wp-content/wp-content/uploads/2025/06/4.png" alt="Twitter" style="width: 24px; margin: 0 5px;"></a>
    <a href="#" rel="nofollow" target="_blank"><img src="https://cdn.onlive.io/wp-content/wp-content/uploads/2025/06/pngimg.com-twitch_PNG28.png" alt="Twitch" style="width: 24px; margin: 0 5px;"></a>
    <a href="#" rel="nofollow" target="_blank"><img src="https://cdn.onlive.io/wp-content/wp-content/uploads/2025/06/Youtube_logo.png" alt="Youtube" style="width: 24px; margin: 0 5px;"></a>
    <a href="#" rel="nofollow" target="_blank"><img src="https://cdn.onlive.io/wp-content/wp-content/uploads/2025/06/reddit-logo-1.png" alt="Reddit" style="width: 24px; margin: 0 5px;"></a>
    <a href="#" rel="nofollow" target="_blank"><img src="https://cdn.onlive.io/wp-content/wp-content/uploads/2025/06/pngimg.com-pinterest_PNG63.png" alt="Pinterest" style="width: 24px; margin: 0 5px;"></a>
    <a href="#" rel="nofollow" target="_blank"><img src="https://cdn.onlive.io/wp-content/wp-content/uploads/2025/06/free-tumblr-logo-icon-2434-thumb.png" alt="Tumblr" style="width: 24px; margin: 0 5px;"></a>
  </div>
  
  <div style="margin: 1rem 0"><a href="//www.dmca.com/Protection/Status.aspx?ID=b03a051e-fc2a-4ffb-ab78-7b2110c8201b" title="DMCA.com Protection Status" class="dmca-badge"> <img src ="https://images.dmca.com/Badges/_dmca_premi_badge_4.png?ID=b03a051e-fc2a-4ffb-ab78-7b2110c8201b"  alt="DMCA.com Protection Status" /></a>  <script src="https://images.dmca.com/Badges/DMCABadgeHelper.min.js"> </script></div>
  
  </div>
</footer>


    <button onclick="scrollToTop()" id="scrollTopBtn" title="Go to top">
      <svg viewBox="0 0 24 24">
        <path
          d="M13,20H11V8L5.5,13.5L4.08,12.08L12,4.16L19.92,12.08L18.5,13.5L13,8V20Z"
        ></path>
      </svg>
    </button>

    <script src="https://cdn.onlive.io/wp-content/themes/cakhiatv/assets/js/main.js"></script>
    
  </body>
        <script>
        if ('serviceWorker' in navigator) {
            window.addEventListener('load', function () {
                navigator.serviceWorker.register('/sw.js')
                    .then(function (reg) { /*console.log('[SW] ✅ Registered, scope:', reg.scope);*/ })
                    .catch(function (err) { /*console.warn('[SW] Registration failed:', err);*/ });
            });
        }
    </script>
    <script type="speculationrules">
{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"\/*"},{"not":{"href_matches":["\/wp-*.php","\/wp-admin\/*","\/wp-content\/uploads\/*","\/wp-content\/*","\/wp-content\/plugins\/*","\/wp-content\/themes\/cakhiatv\/*","\/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
</script>
        <script src="https://onlive.io/js/websocket-client.js"></script>
        <style>
            @keyframes spin {
                0% {
                    transform: rotate(0deg);
                }

                100% {
                    transform: rotate(360deg);
                }
            }

            .loading-spinner {
                animation: spin 1s linear infinite;
            }

            #match-list {
                position: relative;
            }

            #match-list>div[style*="display: flex"] {
                width: 100% !important;
                max-width: 100% !important;
            }
        </style>
        <script>
            // ─── LocalStorage Cache (giống colatv40.live) ────────────────
            const LS_MATCHES_KEY = 'colatv_matches_v1';
            const LS_MATCHES_TTL = 10 * 60 * 1000; // 10 phút

            function loadMatchesFromCache() {
                try {
                    const raw = localStorage.getItem(LS_MATCHES_KEY);
                    if (!raw) return null;
                    const { data, ts } = JSON.parse(raw);
                    if (!data || !Array.isArray(data) || data.length === 0) return null;
                    if (Date.now() - ts > LS_MATCHES_TTL) return null;
                    return data;
                } catch { return null; }
            }

            function saveMatchesToCache(matches) {
                try {
                    if (!matches || matches.length === 0) return;
                    localStorage.setItem(LS_MATCHES_KEY, JSON.stringify({ data: matches, ts: Date.now() }));
                } catch { /* localStorage full, bỏ qua */ }
            }
            // ─────────────────────────────────────────────────────────────

            // Tối ưu: Cache DOM selectors để tránh query lại
            const filterCountCache = {
                countAllType: null,
                countAll: null,
                countElements: {},
                noBlvElement: null,
                liveElement: null,
                hotElement: null,
                todayElement: null,
                tomorrowElement: null,
                initialized: false
            };

            function initFilterCountCache() {
                if (filterCountCache.initialized) return;

                filterCountCache.countAllType = document.getElementById('count-all-type');
                filterCountCache.countAll = document.getElementById('count-all');
                filterCountCache.noBlvElement = document.getElementById('noblv-live');
                filterCountCache.liveElement = document.getElementById('count-live');
                filterCountCache.hotElement = document.getElementById('count-hot');
                filterCountCache.todayElement = document.getElementById('count-today');
                filterCountCache.tomorrowElement = document.getElementById('count-tomorrow');

                ['football', 'basketball', 'tennis', 'volleyball'].forEach(sport => {
                    filterCountCache.countElements[sport] = document.getElementById(`count-${sport}`);
                });

                filterCountCache.initialized = true;
            }

            // Hàm đếm số lượng trận đấu theo bộ lọc - Tối ưu với cached selectors
            function updateFilterCounts(visibleMatchCards, allMatchCards) {
                initFilterCountCache();

                if (filterCountCache.countAllType) {
                    filterCountCache.countAllType.textContent = allMatchCards.length;
                }

                if (filterCountCache.countAll) {
                    filterCountCache.countAll.textContent = visibleMatchCards.length;
                }

                ['football', 'basketball', 'tennis', 'volleyball'].forEach(sport => {
                    const countElement = filterCountCache.countElements[sport];
                    if (countElement) {
                        const count = Array.from(allMatchCards).filter(card => card.dataset.sport === sport).length;
                        countElement.textContent = count;
                    }
                });

                if (filterCountCache.noBlvElement) {
                    const noBlvCount = Array.from(visibleMatchCards).filter(card => card.dataset.blv === 'false').length;
                    filterCountCache.noBlvElement.textContent = noBlvCount;
                }

                if (filterCountCache.liveElement) {
                    const noBlvCount = Array.from(visibleMatchCards).filter(card => card.dataset.blv === 'false').length;
                    const liveCount = Array.from(visibleMatchCards).filter(card => card.dataset.live === 'true').length - noBlvCount;
                    filterCountCache.liveElement.textContent = liveCount;
                }

                if (filterCountCache.hotElement) {
                    const noBlvCount = Array.from(visibleMatchCards).filter(card => card.dataset.blv === 'false').length;
                    const hotCount = Array.from(visibleMatchCards).filter(card => card.dataset.hot === 'true').length - noBlvCount;
                    filterCountCache.hotElement.textContent = hotCount;
                }

                const today = new Date().toISOString().split('T')[0];
                const tomorrow = new Date(Date.now() + 86400000).toISOString().split('T')[0];

                if (filterCountCache.todayElement) {
                    const todayCount = Array.from(visibleMatchCards).filter(card => card.dataset.date === today).length;
                    filterCountCache.todayElement.textContent = todayCount;
                }

                if (filterCountCache.tomorrowElement) {
                    const tomorrowCount = Array.from(visibleMatchCards).filter(card => card.dataset.date === tomorrow).length;
                    filterCountCache.tomorrowElement.textContent = tomorrowCount;
                }
            }

            // Hàm chuyển đổi ID môn thể thao thành tên
            function sportName(sportId) {
                const sports = {
                    1: 'football',
                    2: 'basketball',
                };
                return sports[sportId] || 'unknown';
            }

            // Hàm xử lý timestamp
            function fixtime(timestamp) {
                return isNaN(timestamp) ? new Date(timestamp).getTime() : timestamp;
            }

            // Hàm định dạng ngày giờ
            function formatDate(timestamp, format) {
                const date = new Date(timestamp * 1000);
                const day = String(date.getDate()).padStart(2, '0');
                const month = String(date.getMonth() + 1).padStart(2, '0');
                const year = date.getFullYear();
                const hours = String(date.getHours()).padStart(2, '0');
                const minutes = String(date.getMinutes()).padStart(2, '0');
                if (format === 'd/m') return `${day}/${month}`;
                if (format === 'Y-m-d') return `${year}-${month}-${day}`;
                if (format === 'H:i') return `${hours}:${minutes}`;
                return date;
            }

            // Hàm lấy domain API random để tránh Cloudflare rate limit
            function getApiDomain() {
                const domains = ['api.gvapi.cc'];

                // Random chọn một domain
                const index = Math.floor(Math.random() * domains.length);
                const selected = domains[index];

                return 'https://' + selected;
            }

            // Hàm lấy domain API random cho video-home (pinned-home)
            function getVideoHomeApiDomain() {
                const domains = ['video-home.gvapi.cc'];

                // Random chọn một domain
                const index = Math.floor(Math.random() * domains.length);
                const selected = domains[index];

                return 'https://' + selected;
            }

            // Hàm hiển thị loading
            function showLoading() {
                const matchList = getMatchList();
                if (!matchList) return;

                // Hiển thị trực tiếp trong match-list, thay thế toàn bộ nội dung
                matchList.innerHTML = `
                <div style="text-align: center; padding: 60px 20px; width: 100%; min-height: 400px; display: flex; flex-direction: column; justify-content: center; align-items: center; box-sizing: border-box;">
                    <div class="loading-spinner" style="display: block; width: 50px; height: 50px; border: 4px solid #f3f3f3; border-top: 4px solid #3498db; border-radius: 50%; animation: spin 1s linear infinite; margin: 0 auto;"></div>
                    <p style="margin-top: 20px; color: #666; font-size: 16px; text-align: center; width: 100%;">Đang tải dữ liệu...</p>
                </div>
            `;
            }

            // Hàm hiển thị lỗi với các button đề xuất
            function showErrorWithSuggestions() {
                const matchList = getMatchList();
                if (!matchList) return;

                const suggestionLinks = [
                    { name: 'iotditr.com', url: 'https://iotditr.com' },
                    { name: 'cntsiend.com', url: 'https://cntsiend.com' },
                    { name: 'euwygrb.com', url: 'https://euwygrb.com' },
                    { name: 'ppoemlg.com', url: 'https://ppoemlg.com' },
                    { name: 'eyhtldu.com', url: 'https://eyhtldu.com' }
                ];

                const buttonsHtml = suggestionLinks.map(link =>
                    `<a href="${link.url}" target="_blank" rel="nofollow" style="display: inline-block; margin: 8px; padding: 12px 24px; background-color: #3498db; color: white; text-decoration: none; border-radius: 5px; font-weight: bold; transition: background-color 0.3s; cursor: pointer;">${link.name}</a>`
                ).join('');

                // Hiển thị trực tiếp trong match-list, thay thế toàn bộ nội dung
                matchList.innerHTML = `
                <div style="text-align: center; padding: 60px 20px; width: 100%; min-height: 400px; display: flex; flex-direction: column; justify-content: center; align-items: center;">
                    <div style="margin-bottom: 20px;">
                        <svg width="64" height="64" viewBox="0 0 24 24" fill="none" stroke="#e74c3c" stroke-width="2" style="margin: 0 auto; display: block;">
                            <circle cx="12" cy="12" r="10"></circle>
                            <line x1="12" y1="8" x2="12" y2="12"></line>
                            <line x1="12" y1="16" x2="12.01" y2="16"></line>
                        </svg>
                    </div>
                    <h3 style="color: #e74c3c; margin-bottom: 15px; font-size: 24px; font-weight: bold;">Hệ thống gặp sự cố</h3>
                    <p style="color: #666; margin-bottom: 30px; font-size: 16px; max-width: 500px;">Bạn có thể chọn kênh khác:</p>
                    <div style="display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; width: 100%; max-width: 800px;">
                        ${buttonsHtml}
                    </div>
                </div>
            `;
            }

            // Hàm fetch với timeout
            function fetchWithTimeout(url, timeout = 10000) {
                return Promise.race([
                    fetch(url),
                    new Promise((_, reject) =>
                        setTimeout(() => reject(new Error('Request timeout')), timeout)
                    )
                ]);
            }

            // Hàm lấy dữ liệu trận đấu từ API và render
            async function refreshMatches() {
                const matchList = getMatchList();
                if (!matchList) {
                    console.error('Không tìm thấy phần tử match-list');
                    return;
                }

                // Chỉ hiển thị loading nếu chưa có data từ cache
                if (!matchList.querySelector('.match-card')) {
                    showLoading();
                }

                try {
                    const apiBase = getApiDomain();
                    const response = await fetchWithTimeout(apiBase + '/api/matches?t=' + new Date().getTime(), 10000);

                    if (!response.ok) {
                        throw new Error('Lỗi khi lấy dữ liệu API: ' + response.status);
                    }

                    const datas = await response.json();

                    if (!datas.data || typeof datas.data !== 'object') {
                        throw new Error('Cấu trúc dữ liệu API không hợp lệ');
                    }

                    const newMatches = [];
                    const matchesByGroup = {}; // Nhóm matches theo competitionName

                    for (const [key, data] of Object.entries(datas.data)) {
                        // Bảo vệ nếu anchorAppointmentVoList không phải array
                        const anchorList = Array.isArray(data.anchorAppointmentVoList) ? data.anchorAppointmentVoList : [];
                        //if (!anchorList.length) continue;

                        // Bỏ các trận "Live streaming"
                        if (anchorList[0]?.nickName === 'Live streaming') continue;

                        // Bảo vệ tỉ số
                        const homeScoreArr = Array.isArray(data.homeScore) ? data.homeScore : [];
                        const awayScoreArr = Array.isArray(data.awayScore) ? data.awayScore : [];
                        const homeScore = homeScoreArr.length ? homeScoreArr[0] : 0;
                        const awayScore = awayScoreArr.length ? awayScoreArr[0] : 0;

                        // Nếu match có house_id khác null, thêm ?houseId=... vào slug
                        let slug = key;
                        if (data.house_id && data.house_id !== null) {
                            slug = `${key}?houseId=${data.house_id}`;
                        }

                        const competitionName = data.competitionName || 'NBA';
                        const matchData = {
                            id: 2,
                            slug: slug,
                            sport: sportName(data.sportId),
                            live: data.matchStatus === 2,
                            hot: true,
                            blv: anchorList[0]?.nickName !== 'Live streaming',
                            date: formatDate(fixtime(data.matchTime), 'd/m'),
                            datesearch: formatDate(fixtime(data.matchTime), 'Y-m-d'),
                            hour: formatDate(fixtime(data.matchTime), 'H:i'),
                            competitionName: competitionName,
                            teams: [
                                data.homeTeamName || 'Team C',
                                data.awayTeamName || 'Team D'
                            ],
                            score: `${homeScore}:${awayScore}`,
                            videoUrl: data.videoUrl || 'https://live2.example.com',
                            animationUrl: data.animationUrl || 'https://animation.example.com',
                            data: data
                        };

                        newMatches.push(matchData);

                        // Nhóm matches theo competitionName
                        if (!matchesByGroup[competitionName]) {
                            matchesByGroup[competitionName] = [];
                        }
                        matchesByGroup[competitionName].push(matchData);
                    }

                    // Gọi hàm render với danh sách trận đấu mới
                    renderAllMatches(newMatches);
                    filterMatches('parent', newMatches);
                    saveMatchesToCache(newMatches); // 
                } catch (error) {
                    console.error('Lỗi khi làm mới trận đấu:', error);
                    // Đã loại bỏ showErrorWithSuggestions() để không ghi đè giao diện SSR nếu API thất bại ở lần gọi đầu tiên.
                    // Hệ thống sẽ âm thầm giữ nguyên giao diện SSR và đợi Socket cập nhật.
                }
            }

            function createMatchCard(match) {
                // Bảo vệ dữ liệu, tránh crash nếu cache cũ thiếu data
                if (!match || !match.data) return '';

                // Bảo vệ anchorAppointmentVoList
                const anchorList = Array.isArray(match.data.anchorAppointmentVoList)
                    ? match.data.anchorAppointmentVoList
                    : [];

                // Xử lý slug an toàn
                const slugStr = match.slug || '';
                const baseSlug = slugStr.includes('?') ? slugStr.split('?')[0] : slugStr;

                const nicknames = anchorList.map(item => {
                    const itemHouseId = item.houseId || '';
                    if (itemHouseId !== '') {
                        const separator = baseSlug.includes('?') ? '&' : '?';
                        return `<a href="https://onlive.io/truc-tiep/${baseSlug}${separator}houseId=${itemHouseId}" rel="nofollow">${item.nickName}</a>`;
                    } else {
                        return `<a href="https://onlive.io/truc-tiep/${slugStr}" rel="nofollow">${item.nickName}</a>`;
                    }
                });

                const nicknameString = nicknames.join(' | ');

                // Bảo vệ tỉ số (dùng lại match.score nếu muốn)
                const homeScoreArr = Array.isArray(match.data.homeScore) ? match.data.homeScore : [];
                const awayScoreArr = Array.isArray(match.data.awayScore) ? match.data.awayScore : [];
                const homeScore = homeScoreArr.length ? homeScoreArr[0] : 0;
                const awayScore = awayScoreArr.length ? awayScoreArr[0] : 0;

                return `
                <div class="match-card" data-id="${match.id}" data-sport="${match.sport}" data-live="${match.live}" data-blv="${match.blv}" data-hot="${match.hot}" data-date="${match.datesearch}">
                    <div class="match-card__body">
                        <a href="https://onlive.io/truc-tiep/${match.slug}" class="link-match" rel="nofollow"></a>
                        <div class="match-card__header">
                            <div class="match-card__league">
                                <span>${match.data.competitionName}</span>
                            </div>
                            <div class="match-card__status">
                                ${match.data.matchStatus == 1
                ? '<div class="match-card__status text-warning text-uppercase">CHƯA BẮT ĐẦU</div>'
                : match.data.matchStatus == 2
                    ? '<div class="match-card__status streaming">ĐANG TRỰC TIẾP</div>'
                    : match.data.matchStatus == 3
                        ? '<span class="btn btn--warning text-uppercase">Tạm ngừng phát sóng</span>'
                        : match.data.matchStatus == 4
                            ? '<span class="btn btn--danger text-uppercase">Cấm phát sóng vĩnh viễn</span>'
                            : '<span class="btn btn--secondary text-uppercase">Không xác định</span>'
            }
                            </div>
                            <div class="match-card__time"><span class="match-time">${match.hour} - ${match.date}</span></div>
                        </div>
                        <div class="match-card__teams">
                            <div class="team home">
                                <img src="${match.data.homeTeamLogo}" alt="${match.data.homeTeamName}" class="team__logo">
                                <span class="team__name">${match.data.homeTeamName}</span>
                            </div>
                            <div class="match-card__score">${homeScore} - ${awayScore}</div>
                            <div class="team">
                                <img src="${match.data.awayTeamLogo}" alt="${match.data.awayTeamName}" class="team__logo">
                                <span class="team__name">${match.data.awayTeamName}</span>
                            </div>
                        </div>
                        <div class="match-card__info">
                            <div class="match-card__stats">
                                <div class="match-card__stats-content">
                                    ${nicknameString}
                                </div>
                            </div>
                            <div class="match-card__odds">
                                <a href="https://onlive.io/truc-tiep/${match.slug}" class="btn btn--primary" rel="nofollow">
                                    <span>XEM NGAY</span>
                                </a>
                            </div>
                        </div>
                    </div>
                </div>
            `;
            }

            // Khởi tạo bộ lọc
            let currentFilters = {
                sport: 'all',
                live: false,
                blv: false,
                hot: false,
                commentator: false,
                date: 'all',
                league: 'all'
            };

            // Tối ưu: Preload video metadata để tăng tốc độ load khi click vào match
            const videoPreloadCache = new Map(); // Cache preloaded videos
            function preloadVideoMetadata(videoUrl) {
                if (!videoUrl || videoPreloadCache.has(videoUrl)) {
                    return; // Đã preload rồi
                }

                // Mark as preloading
                videoPreloadCache.set(videoUrl, { status: 'loading', timestamp: Date.now() });

                // Preload bằng cách tạo video element và load metadata
                const video = document.createElement('video');
                video.preload = 'metadata'; // Chỉ load metadata, không load toàn bộ video
                video.muted = true;
                video.playsInline = true;
                video.style.display = 'none';

                video.addEventListener('loadedmetadata', function () {
                    videoPreloadCache.set(videoUrl, { status: 'loaded', timestamp: Date.now() });
                    document.body.removeChild(video);
                });

                video.addEventListener('error', function () {
                    videoPreloadCache.set(videoUrl, { status: 'error', timestamp: Date.now() });
                    if (document.body.contains(video)) {
                        document.body.removeChild(video);
                    }
                });

                video.src = videoUrl;
                document.body.appendChild(video);

                // Cleanup cache sau 5 phút
                setTimeout(() => {
                    videoPreloadCache.delete(videoUrl);
                }, 5 * 60 * 1000);
            }

            // Tối ưu: Cache match-list selector
            let matchListCache = null;
            function getMatchList() {
                if (!matchListCache) {
                    matchListCache = document.getElementById('match-list');
                }
                return matchListCache;
            }

            // Hàm render toàn bộ trận đấu
            function renderAllMatches(matches) {
                const matchList = getMatchList();
                if (!matchList) {
                    console.error('Không tìm thấy phần tử match-list');
                    return;
                }

                // Xóa danh sách cũ
                matchList.innerHTML = '';

                // Render danh sách mới
                matches.forEach(match => {
                    if (!match || !match.data) return; // Bỏ qua match lỗi

                    const cardHTML = createMatchCard(match);
                    if (!cardHTML) return; // Bỏ qua nếu không tạo được thẻ
                    
                    const tempDiv = document.createElement('div');
                    tempDiv.innerHTML = cardHTML.trim();
                    const cardElement = tempDiv.firstChild;
                    if (!cardElement) return;

                    // Ẩn các trận không có bình luận viên
                    /*if (cardElement.getAttribute('data-blv') === 'false') {
                        cardElement.classList.add('d-none');
                    }*/

                    // Tối ưu: Preload video metadata khi hover vào match card
                    if (match.data && match.data.videoUrl) {
                        let preloadTimeout = null;
                        cardElement.addEventListener('mouseenter', function () {
                            // Debounce: chỉ preload sau 500ms hover
                            preloadTimeout = setTimeout(() => {
                                preloadVideoMetadata(match.data.videoUrl);
                            }, 500);
                        });
                        cardElement.addEventListener('mouseleave', function () {
                            if (preloadTimeout) {
                                clearTimeout(preloadTimeout);
                                preloadTimeout = null;
                            }
                        });
                    }

                    matchList.appendChild(cardElement);
                });

                // Cập nhật bộ đếm
                const visibleMatches = document.querySelectorAll('.match-card:not(.d-none)');
                updateFilterCounts(visibleMatches, document.querySelectorAll('.match-card'));
            }

            // Hàm lọc trận đấu
            function filterMatches(type, matches) {
                const allCards = document.querySelectorAll('.match-card');

                // Lọc theo môn thể thao
                const sportFiltered = Array.from(allCards).filter(card => {
                    const sport = card.dataset.sport;
                    return currentFilters.sport === 'all' || sport === currentFilters.sport;
                });

                let finalFiltered = sportFiltered;

                // Áp dụng các bộ lọc khác
                if (currentFilters.live) {
                    finalFiltered = finalFiltered.filter(card => card.dataset.live === 'true' && card.dataset.blv === 'true');
                } else if (currentFilters.blv) {
                    finalFiltered = finalFiltered.filter(card => card.dataset.blv === 'false');
                } else if (currentFilters.hot) {
                    finalFiltered = finalFiltered.filter(card => card.dataset.hot === 'true' && card.dataset.blv === 'true');
                } else if (currentFilters.date !== 'all') {
                    finalFiltered = finalFiltered.filter(card => card.dataset.date === currentFilters.date && card.dataset.blv === 'true');
                }

                // Hiển thị/ẩn các thẻ
                allCards.forEach(card => {
                    card.classList.toggle('d-none', !finalFiltered.includes(card));
                });

                // Cập nhật bộ đếm
                if (type === 'parent') {
                    updateFilterCounts(sportFiltered, allCards);
                } else {
                    updateFilterCounts(finalFiltered, allCards);
                }
            }

            // Gắn sự kiện cho nút lọc môn thể thao
            document.querySelectorAll('.sports-filter__button[data-sport]').forEach(button => {
                button.addEventListener('click', () => {
                    currentFilters.sport = button.getAttribute('data-sport');
                    filterMatches('parent');
                });
            });

            // Gắn sự kiện cho nút lọc con
            document.querySelectorAll('.sports-filter__button_child').forEach(btn => {
                btn.addEventListener('click', function () {
                    const filterType = this.getAttribute('data-filter');
                    const value = this.getAttribute('data-value');

                    if (filterType === 'date') {
                        currentFilters.date = value;
                        currentFilters.live = false;
                        currentFilters.hot = false;
                        currentFilters.blv = false;
                    } else if (filterType === 'live') {
                        currentFilters.live = true;
                        currentFilters.date = 'all';
                        currentFilters.hot = false;
                        currentFilters.blv = false;
                    } else if (filterType === 'hot') {
                        currentFilters.hot = true;
                        currentFilters.date = 'all';
                        currentFilters.live = false;
                        currentFilters.blv = false;
                    } else if (filterType === 'child_all') {
                        currentFilters.live = false;
                        currentFilters.hot = false;
                        currentFilters.blv = false;
                        currentFilters.date = 'all';
                    }

                    document.querySelectorAll('.sports-filter__button_child').forEach(b => b.classList.remove('active'));
                    this.classList.add('active');

                    filterMatches('child');
                });
            });

            // Gắn sự kiện cho toggle livescore
            const liveToggle = document.getElementById('livescoreToggle');
            if (liveToggle) {
                liveToggle.addEventListener('change', () => {
                    currentFilters.live = liveToggle.checked;
                    filterMatches('parent');
                });
            }

            // ===== WEBSOCKET INTEGRATION =====
            let wsClient = null;
            let matchesWebSocketConnected = false;
            let fallbackPollingInterval = null;

            // Function để transform WebSocket data format
            function transformWebSocketMatches(data) {
                const newMatches = [];

                for (const [key, matchData] of Object.entries(data)) {
                    // Logic tương tự như trong refreshMatches()
                    const anchorList = Array.isArray(matchData.anchorAppointmentVoList)
                        ? matchData.anchorAppointmentVoList
                        : [];

                    if (anchorList[0]?.nickName === 'Live streaming') continue;

                    const homeScoreArr = Array.isArray(matchData.homeScore) ? matchData.homeScore : [];
                    const awayScoreArr = Array.isArray(matchData.awayScore) ? matchData.awayScore : [];
                    const homeScore = homeScoreArr.length ? homeScoreArr[0] : 0;
                    const awayScore = awayScoreArr.length ? awayScoreArr[0] : 0;

                    let slug = key;
                    if (matchData.house_id && matchData.house_id !== null) {
                        slug = `${key}?houseId=${matchData.house_id}`;
                    }

                    const competitionName = matchData.competitionName || 'NBA';
                    const matchDataObj = {
                        id: 2,
                        slug: slug,
                        sport: sportName(matchData.sportId),
                        live: matchData.matchStatus === 2,
                        hot: true,
                        blv: anchorList[0]?.nickName !== 'Live streaming',
                        date: formatDate(fixtime(matchData.matchTime), 'd/m'),
                        datesearch: formatDate(fixtime(matchData.matchTime), 'Y-m-d'),
                        hour: formatDate(fixtime(matchData.matchTime), 'H:i'),
                        competitionName: competitionName,
                        teams: [
                            matchData.homeTeamName || 'Team C',
                            matchData.awayTeamName || 'Team D'
                        ],
                        score: `${homeScore}:${awayScore}`,
                        videoUrl: matchData.videoUrl || 'https://live2.example.com',
                        animationUrl: matchData.animationUrl || 'https://animation.example.com',
                        data: matchData
                    };

                    newMatches.push(matchDataObj);
                }

                return newMatches;
            }

            // Function để init WebSocket
            function initMatchesWebSocket() {
                // WebSocket URL - có thể config từ PHP hoặc hardcode
                // Nếu có server-socket service, dùng URL đó
                // Format: wss://server.gvapi.cc hoặc ws://localhost:3320
                const wsUrl = 'wss://server.ws-xyz.com/ws'; // Thay bằng URL thực tế của bạn

                // Check nếu RealtimeWebSocketClient đã được load
                if (typeof RealtimeWebSocketClient === 'undefined') {
                    console.warn('[Homepage] RealtimeWebSocketClient not loaded, falling back to polling');
                    startFallbackPolling();
                    return;
                }

                wsClient = new RealtimeWebSocketClient(wsUrl);

                // Subscribe to matches updates
                wsClient.subscribe('matches:updated', (data) => {
                    //console.log('[Homepage] Received matches update from WebSocket');

                    if (data.code === '0000' && data.data) {
                        // Transform data để tương thích với renderAllMatches()
                        const transformedMatches = transformWebSocketMatches(data.data);
                        renderAllMatches(transformedMatches);
                        filterMatches('parent', transformedMatches);
                        saveMatchesToCache(transformedMatches); // 
                    } else if (data.data && typeof data.data === 'object') {
                        // Nếu data trực tiếp là object (không có code)
                        const transformedMatches = transformWebSocketMatches(data.data);
                        renderAllMatches(transformedMatches);
                        filterMatches('parent', transformedMatches);
                        saveMatchesToCache(transformedMatches); // 
                    }
                });

                // Handle connection events
                wsClient.subscribe('connected', () => {
                    //console.log('[Homepage] WebSocket connected');
                    matchesWebSocketConnected = true;
                    // Stop fallback polling nếu đang chạy
                    if (fallbackPollingInterval) {
                        clearInterval(fallbackPollingInterval);
                        fallbackPollingInterval = null;
                    }
                });

                wsClient.subscribe('disconnected', () => {
                    //console.log('[Homepage] WebSocket disconnected, falling back to polling');
                    matchesWebSocketConnected = false;
                    startFallbackPolling();
                });

                wsClient.subscribe('error', (error) => {
                    console.error('[Homepage] WebSocket error:', error);
                    matchesWebSocketConnected = false;
                    startFallbackPolling();
                });

                wsClient.connect();
            }

            // Fallback polling nếu WebSocket fail
            function startFallbackPolling() {
                if (fallbackPollingInterval) return; // Already running

                //('[Homepage] Starting fallback polling');
                fallbackPollingInterval = setInterval(() => {
                    if (!matchesWebSocketConnected) {
                        refreshMatches(); // Use existing function
                    } else {
                        // WebSocket reconnected, stop polling
                        clearInterval(fallbackPollingInterval);
                        fallbackPollingInterval = null;
                    }
                }, 120000); // 2 minutes như cũ
            }

            // Nếu SSR đã render HTML, ta không cần nạp từ localStorage hay fetch API lần đầu nữa (tránh nháy màn hình)
            const ssrCardsCount = document.querySelectorAll('.match-card').length;
            
            if (ssrCardsCount === 0) {
                // Thử load từ cache trước nếu không có SSR
                const cachedMatches = loadMatchesFromCache();
                if (cachedMatches && cachedMatches.length > 0) {
                    try {
                        renderAllMatches(cachedMatches);
                        filterMatches('parent', cachedMatches);
                    } catch (error) {
                        console.error('[Cache Render Error]', error);
                    }
                }

                // Fetch fresh data từ API (cập nhật + ghi đè cache)
                refreshMatches();
            }

            // Thử WebSocket trước, fallback to polling nếu fail
            // Delay một chút để đảm bảo RealtimeWebSocketClient đã được load
            setTimeout(() => {
                initMatchesWebSocket();
            }, 500);

            // Cleanup khi page unload
            window.addEventListener('beforeunload', () => {
                if (wsClient) {
                    wsClient.disconnect();
                }
                if (fallbackPollingInterval) {
                    clearInterval(fallbackPollingInterval);
                }
            });
        </script>
            <style>
        .home-banner-slider {
            width: 100%;
            margin: 15px 0;
            border-radius: 8px;
            overflow: hidden;
            position: relative;
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
            display: none;
            /* Hidden by default until loaded */
            z-index: 10;
        }

        .home-banner-track {
            display: flex;
            transition: transform 0.5s ease-in-out;
            height: 100%;
        }

        .home-banner-slide {
            min-width: 100%;
            display: block;
            text-decoration: none;
        }

        .home-banner-slide img {
            width: 100%;
            height: auto;
            display: block;
            object-fit: cover;
        }

        .home-banner-dots {
            position: absolute;
            bottom: 10px;
            left: 0;
            right: 0;
            display: flex;
            justify-content: center;
            gap: 6px;
        }

        .home-banner-dot {
            width: 8px;
            height: 8px;
            background: rgba(255, 255, 255, 0.5);
            border-radius: 50%;
            cursor: pointer;
            transition: background 0.3s;
        }

        .home-banner-dot.active {
            background: white;
            transform: scale(1.2);
        }
    </style>
    <script>
        document.addEventListener('DOMContentLoaded', async function () {
            try {
                // Fetch settings
                const res = await fetch('https://api.gvapi.cc/api/settings');
                const data = await res.json();

                if (data.success && data.home_banners && data.home_banners.length > 0) {
                    const banners = data.home_banners.sort((a, b) => a.order - b.order);

                    // Create slider container
                    const sliderContainer = document.createElement('div');
                    sliderContainer.className = 'home-banner-slider';

                    const track = document.createElement('div');
                    track.className = 'home-banner-track';

                    const dotsContainer = document.createElement('div');
                    dotsContainer.className = 'home-banner-dots';

                    banners.forEach((banner, index) => {
                        // Slide
                        const slide = document.createElement('a');
                        slide.className = 'home-banner-slide';
                        slide.href = banner.link_url && banner.link_url !== '#' ? banner.link_url : 'javascript:void(0)';
                        slide.target = banner.link_url && banner.link_url !== '#' ? '_blank' : '_self';

                        const img = document.createElement('img');
                        img.src = banner.image_url;
                        img.alt = banner.name || 'Banner';

                        slide.appendChild(img);
                        track.appendChild(slide);

                        // Dot
                        const dot = document.createElement('div');
                        dot.className = 'home-banner-dot';
                        if (index === 0) dot.classList.add('active');

                        dot.addEventListener('click', () => {
                            goToSlide(index);
                        });

                        dotsContainer.appendChild(dot);
                    });

                    sliderContainer.appendChild(track);
                    if (banners.length > 1) {
                        sliderContainer.appendChild(dotsContainer);
                    }

                    // Inject into DOM (after h1 in hero content)
                    const h1 = document.querySelector('.hero__content h1');
                    if (h1) {
                        h1.insertAdjacentElement('afterend', sliderContainer);
                        sliderContainer.style.display = 'block';

                        // Slider Logic
                        let currentIndex = 0;
                        let autoPlayInterval;
                        const totalSlides = banners.length;

                        function goToSlide(index) {
                            if (totalSlides <= 1) return;
                            currentIndex = index;
                            track.style.transform = `translateX(-${currentIndex * 100}%)`;

                            // Update dots
                            Array.from(dotsContainer.children).forEach((d, i) => {
                                if (i === currentIndex) d.classList.add('active');
                                else d.classList.remove('active');
                            });

                            resetAutoPlay();
                        }

                        function nextSlide() {
                            let next = currentIndex + 1;
                            if (next >= totalSlides) next = 0;
                            goToSlide(next);
                        }

                        function resetAutoPlay() {
                            clearInterval(autoPlayInterval);
                            autoPlayInterval = setInterval(nextSlide, 3000);
                        }

                        if (totalSlides > 1) {
                            resetAutoPlay();
                        }
                    }
                }
            } catch (err) {
                console.error('Lỗi load home banners:', err);
            }
        });
    </script>
            <style>
            @media (min-width: 481px) and (max-width: 767px) {
                .match-card__status {
                    max-width: 120px;
                    font-size: 12px;
                }
            }

            @media (min-width: 576px) and (max-width: 767px) {
                .match-card__league {
                    max-width: 100px;
                }
            }

            @media (min-width: 481px) and (max-width: 575px) {
                .match-card__header {
                    flex-direction: row !important;
                }

                .match-card__time {
                    max-width: 100px !important;
                }
            }

            .top-live-box {
                width: 100%;
                height: auto;
                display: flex;
                gap: 8px;
            }

            .top-live-box .left {
                width: 100%;
                min-height: 564px;
                background-color: #000;
                border-radius: 4px;
                overflow: hidden;
            }

            .top-live-box .live-list {
                width: 240px;
                flex-shrink: 0;
            }

            .top-live-box .live-list .live-item {
                width: 100%;
                height: 144px;
                margin-bottom: 6px;
                cursor: pointer;
                border-radius: 4px;
                transition: all .1s ease-in-out;
                overflow: hidden;
                border: 2px solid transparent;
                position: relative;
            }

            .top-live-box .live-list .live-item .anchor-item {
                width: 100%;
                height: 100%;
            }

            .el-image img {
                display: block;
                width: 100%;
                height: 100%;
                object-fit: cover;
            }

            .btn-view-truc-tiep {
                position: absolute;
                top: 70%;
                left: 50%;
                transform: translate(-50%, -50%);
                z-index: 5;
                background: #f2152d;
                padding: 20px;
                border-radius: 30px;
                cursor: pointer;
                text-align: center;
            }

            .btn-view-truc-tiep:hover {
                opacity: 0.8;
            }

            .video-player {
                position: relative;
            }

            .top-live-box .live-list .live-item.active {
                border: 2px solid #ff0202;
            }

            .overlay-click {
                position: absolute;
                top: 0;
                left: 0;
                width: 100%;
                height: 100%;
                z-index: 10;
                display: block;
            }

            /* Responsive */
            @media screen and (max-width: 1024px) {
                .top-live-box {
                    flex-direction: column;
                }

                .top-live-box .left {
                    width: 100%;
                    min-height: 400px;
                }

                .top-live-box .live-list {
                    display: none !important;
                    width: 100%;
                    flex-direction: row;
                    flex-wrap: wrap;
                    justify-content: center;
                    gap: 6px;
                    margin-top: 12px;
                }

                .top-live-box .live-list .live-item {
                    width: calc(50% - 6px);
                    height: 120px;
                }
            }

            @media screen and (max-width: 768px) {
                .top-live-box .left {
                    min-height: unset;
                }

                .btn-view-truc-tiep {
                    padding: 10px 10px;
                    font-size: 12px;
                }

                .top-live-box .live-list .live-item {
                    width: calc(50% - 3px);
                    height: 100px;
                }
            }

            @media screen and (max-width: 480px) {
                .top-live-box .live-list .live-item {
                    width: calc(50% - 3px);
                    height: 100px;
                }

                .btn-view-truc-tiep {
                    padding: 8px 14px;
                    font-size: 13px;
                }

                .match-card__body {
                    gap: 0.6rem;
                }
            }
        </style>
        <script src="//unpkg.byted-static.com/xgplayer/3.0.0-next.1/dist/index.min.js"></script>
        <script src="//unpkg.com/[email protected]/dist/index.min.js"></script>
        <link rel="stylesheet" href="//unpkg.byted-static.com/xgplayer/3.0.0-alpha.100/dist/xgplayer.min.css" />
        <script type="text/javascript">
            // Hàm lấy domain API random cho video-home (pinned-home)
            function getVideoHomeApiDomain() {
                const domains = [
                    'video-home.gvapi.cc'
                ];

                // Random chọn một domain
                const index = Math.floor(Math.random() * domains.length);
                const selected = domains[index];

                return 'https://' + selected;
            }

            document.addEventListener('DOMContentLoaded', function () {
                const apiBase = getVideoHomeApiDomain();
                const STORAGE_KEY = 'pinnedMatchesCache';
                const heroSection = document.querySelector('section.hero');
                if (!heroSection) {
                    console.error('Hero section not found.');
                    return;
                }

                const skeletonHtml = `
                    <div class="top-live-box container skeleton-loading" id="pinned-matches-container">
                        <style>
                            .skeleton-box {
                                display: inline-block;
                                height: 100%;
                                width: 100%;
                                position: relative;
                                overflow: hidden;
                                background-color: #2a2a2a;
                                border-radius: 8px;
                            }
                            .skeleton-box::after {
                                position: absolute;
                                top: 0;
                                right: 0;
                                bottom: 0;
                                left: 0;
                                transform: translateX(-100%);
                                background-image: linear-gradient(
                                    90deg,
                                    rgba(255, 255, 255, 0) 0,
                                    rgba(255, 255, 255, 0.05) 20%,
                                    rgba(255, 255, 255, 0.2) 60%,
                                    rgba(255, 255, 255, 0)
                                );
                                animation: shimmer 2s infinite;
                                content: '';
                            }
                            @keyframes shimmer { 100% { transform: translateX(100%); } }
                            .skeleton-loading .left { aspect-ratio: 16/9; background: #1a1a1a; padding: 10px; border-radius: 8px;}
                            .skeleton-loading .live-list { display: flex; gap: 10px; margin-top: 10px; }
                            .skeleton-loading .live-item { flex: 1; aspect-ratio: 1/1; background: #1a1a1a; border-radius: 8px; overflow: hidden; }
                        </style>
                        <div class="left">
                            <div class="skeleton-box" style="min-height: 300px;"></div>
                        </div>
                        <div class="live-list">
                            <div class="live-item"><div class="skeleton-box"></div></div>
                            <div class="live-item"><div class="skeleton-box"></div></div>
                            <div class="live-item"><div class="skeleton-box"></div></div>
                            <div class="live-item"><div class="skeleton-box"></div></div>
                        </div>
                    </div>
                `;

                function renderMatches(matches) {
                    const anchors = matches.slice(0, 4).map((match, index) => ({
                        streamUrl: match.playStreamAddress2,
                        image: match.houseImage,
                        name: match.nickName,
                        slug: match.slugKey + '?houseId=' + match.houseId
                    }));

                    if (anchors.length === 0) return;

                    const streamUrl = anchors[0].streamUrl;

                    const liveBoxHtml = `
                        <div class="top-live-box container" id="pinned-matches-container">
                            <div class="left">
                                <div class="video-container">
                                    <div class="video-player">
                                        <div id="mse" style="width: 100%;"></div>
                                        <a href="/truc-tiep/${anchors[0].slug}" class="overlay-click" id="btn-view-link" rel="nofollow"></a>
                                        <span class="btn-view-truc-tiep" rel="nofollow">Vào phòng live đang phát sóng</span>
                                    </div>
                                </div>
                            </div>
                            <div class="live-list">
                                ${anchors.map((anchor, index) => `
                                    <div class="live-item ${index === 0 ? 'active' : ''} live-living-item" data-index="${index}">
                                        <div class="anchor-item">
                                            <div class="placeholder img">
                                                <img src="${anchor.image}" alt="${anchor.name}" style="object-fit: cover;">
                                            </div>
                                        </div>
                                    </div>
                                `).join('')}
                            </div>
                        </div>
                    `;

                    const existingContainer = document.getElementById('pinned-matches-container');
                    if (existingContainer) {
                        existingContainer.outerHTML = liveBoxHtml;
                    } else {
                        heroSection.insertAdjacentHTML('afterend', liveBoxHtml);
                    }

                    if (window.Player && window.HlsPlayer) {
                        new Player({
                            plugins: [window.HlsPlayer],
                            id: "mse",
                            ignores: ["time", "progress"],
                            autoplayMuted: true,
                            autoplay: true,
                            playsinline: true,
                            isLive: true,
                            fluid: true,
                            pip: true,
                            muted: true,
                            url: streamUrl
                        });
                    }

                    const liveItems = document.querySelectorAll('#pinned-matches-container .live-item');
                    const viewLink = document.getElementById('btn-view-link');

                    liveItems.forEach(item => {
                        item.addEventListener('click', () => {
                            const index = parseInt(item.getAttribute('data-index'));
                            liveItems.forEach(i => i.classList.remove('active'));
                            item.classList.add('active');

                            if (window.Player && window.HlsPlayer) {
                                new Player({
                                    plugins: [window.HlsPlayer],
                                    id: "mse",
                                    ignores: ["time", "progress"],
                                    autoplayMuted: true,
                                    autoplay: true,
                                    playsinline: true,
                                    isLive: true,
                                    fluid: true,
                                    pip: true,
                                    muted: true,
                                    url: anchors[index].streamUrl
                                });
                            }
                            if (viewLink) {
                                viewLink.href = '/truc-tiep/' + anchors[index].slug;
                            }
                        });
                    });
                }

                let hasLocalData = false;
                try {
                    const cached = localStorage.getItem(STORAGE_KEY);
                    if (cached) {
                        const parsed = JSON.parse(cached);
                        if (parsed && parsed.length > 0) {
                            renderMatches(parsed);
                            hasLocalData = true;
                        }
                    }
                } catch (e) {
                    console.error('Error parsing localStorage:', e);
                }

                if (!hasLocalData) {
                    heroSection.insertAdjacentHTML('afterend', skeletonHtml);
                }

                fetch('https://video-home.gvapi.cc/api/pinned-home?t=' + new Date().getTime())
                    .then(response => {
                        if (!response.ok) throw new Error('API Response not ok: ' + response.status);
                        return response.json();
                    })
                    .then(data => {
                        const matches = data.pinnedMatches;
                        if (!matches || matches.length < 1) {
                            localStorage.removeItem(STORAGE_KEY);
                            const existingContainer = document.getElementById('pinned-matches-container');
                            if (existingContainer) existingContainer.remove();
                            return;
                        }
                        localStorage.setItem(STORAGE_KEY, JSON.stringify(matches));
                        renderMatches(matches);
                    })
                    .catch(error => {
                        console.error('Error fetching API data:', error);
                        if (!hasLocalData) {
                            const existingContainer = document.getElementById('pinned-matches-container');
                            if (existingContainer) existingContainer.remove();
                        }
                    });
            });
        </script>

            <style>
        .aligncenter {
            margin: 0 auto;

        }

        .wp-caption {
            max-width: 100%;
        }

        footer .container {
            grid-template-columns: 1fr;
        }
    </style>
        <script>
        const mini = document.querySelector('.video-player.is-floating.floating-draggable');
        const margin = 8; // cách mép

        function clampFloatingVideo() {
            if (!mini) return;

            const rect = mini.getBoundingClientRect();

            let x = rect.left;
            let y = rect.top;

            const vw = window.innerWidth;
            const vh = window.innerHeight;

            const minX = margin;
            const minY = margin;           // nếu muốn chừa notch: + safeTop
            const maxX = vw - rect.width - margin;
            const maxY = vh - rect.height - margin;

            if (x < minX) x = minX;
            if (x > maxX) x = maxX;
            if (y < minY) y = minY;
            if (y > maxY) y = maxY;

            mini.style.left = x + 'px';
            mini.style.top = y + 'px';
        }

        // chạy lại mỗi khi viewport thay đổi
        window.addEventListener('scroll', clampFloatingVideo);
        window.addEventListener('resize', clampFloatingVideo);
        window.addEventListener('orientationchange', clampFloatingVideo);

        // iOS Safari thanh URL co giãn → nên dùng thêm:
        if (window.visualViewport) {
            visualViewport.addEventListener('resize', clampFloatingVideo);
            visualViewport.addEventListener('scroll', clampFloatingVideo);
        }
    </script>

        <script>
        // === Catfish Banner Global: lấy từ API /api/catfish-banners (giống React CatfishBanners.jsx) ===
        (function () {
            var apiUrl = 'https://api.gvapi.cc/api/catfish-banners';
            fetch(apiUrl)
                .then(function (res) { return res.ok ? res.json() : null; })
                .then(function (data) {
                    if (!data || !data.success || !data.data || !data.data.length) return;

                    // === Video catfish overlay (nếu có trong trang watch) ===
                    var catfishLink = data.data[0].link_url || '';
                    if (catfishLink) {
                        var overlayTop = document.querySelector('.video-catfish-overlay-top');
                        var overlayBottom = document.querySelector('.video-catfish-overlay');
                        if (overlayTop) {
                            overlayTop.href = catfishLink;
                            overlayTop.style.display = 'block';
                        }
                        if (overlayBottom) {
                            overlayBottom.href = catfishLink;
                            overlayBottom.style.display = 'block';
                        }
                    }

                    // === Tạo container catfish-banner-global (fixed bottom, giống React) ===
                    var wrapper = document.createElement('div');
                    wrapper.className = 'catfish-banner-global';
                    wrapper.style.cssText = 'position:fixed;bottom:0;left:0;right:0;z-index:9999;display:flex;flex-direction:column;align-items:center;pointer-events:none;width:50%;margin:0 auto;';

                    // Nút đóng
                    var closeBtn = document.createElement('button');
                    closeBtn.className = 'catfish-banner-close';
                    closeBtn.innerHTML = '✕';
                    closeBtn.setAttribute('aria-label', 'Đóng quảng cáo');
                    closeBtn.style.cssText = 'position:absolute;top:-24px;right:4px;width:24px;height:24px;background:rgba(0,0,0,0.7);color:#fff;border:none;border-radius:50%;font-size:14px;line-height:24px;text-align:center;cursor:pointer;pointer-events:auto;z-index:10000;padding:0;';
                    closeBtn.addEventListener('click', function () { wrapper.remove(); });
                    wrapper.appendChild(closeBtn);

                    // Render banners
                    data.data.forEach(function (banner) {
                        var a = document.createElement('a');
                        a.className = 'catfish-banner-global-item';
                        a.href = banner.link_url || '#';
                        a.target = '_blank';
                        a.rel = 'nofollow noopener noreferrer';
                        a.style.cssText = 'display:block;width:100%;pointer-events:auto;line-height:0;cursor:pointer;';
                        var img = document.createElement('img');
                        img.src = banner.image_url;
                        img.alt = banner.name || 'Banner';
                        img.style.cssText = 'width:100%;height:auto;display:block;object-fit:contain;';
                        a.appendChild(img);
                        wrapper.appendChild(a);
                    });

                    document.body.appendChild(wrapper);

                    // Mobile: full width
                    var mq = window.matchMedia('(max-width: 768px)');
                    function applyMobile(e) { wrapper.style.width = e.matches ? '100%' : '50%'; }
                    applyMobile(mq);
                    mq.addListener(applyMobile);
                })
                .catch(function (e) { console.warn('Catfish banner load failed:', e); });
        })();
    </script>
    <script>
        // === FIX: Chặn smooth-scroll handlers can thiệp vào catfish overlay ===
        (function () {
            document.addEventListener('click', function (e) {
                var overlay = e.target.closest('.video-catfish-overlay, .video-catfish-overlay-top');
                if (!overlay) return;
                var href = overlay.getAttribute('href');
                if (href && href !== '#' && !href.startsWith('#')) {
                    e.stopImmediatePropagation();
                }
            }, true);
        })();
    </script>
        <script>
    document.addEventListener("DOMContentLoaded", function () {
        const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null, false);
        while (walker.nextNode()) {
            const node = walker.currentNode;
            if (node.nodeValue.match(/vô địch quốc gia/i)) {
                node.nodeValue = node.nodeValue.replace(/vô địch quốc gia/gi, "VĐQG");
            }
        }
    });
    </script>
        <script>
    document.addEventListener('DOMContentLoaded', function () {

        function updateLinks() {
            document.querySelectorAll('.home-banner-slide').forEach(function(el) {
                el.href = 'https://refvsbg.com/';
                el.target = '_blank';
            });
        }

        // Banner hiện có
        updateLinks();

        // Banner render sau bằng JS/API
        new MutationObserver(updateLinks).observe(document.body, {
            childList: true,
            subtree: true
        });

    });
    </script>
    </html>


<!-- | onlive.io | 2026-10-17 13:02:56 -->

Latest requests

# Url Url Source Date
1 https://onlive.io/ 2026-10-17 14:52:38
2 https://www.thebolditalic.com/?gi=… 2026-10-17 14:52:38
3 https://www.texarkanatwins.com/%25… 2026-10-17 14:52:38
4 https://www.thebolditalic.com/?gi=… 2026-10-17 14:52:37
5 https://www.texarkanatwins.com/%25… 2026-10-17 14:52:37
6 https://www.texarkanatwins.com/%25… 2026-10-17 14:52:37
7 https://www.thebolditalic.com/?gi=… 2026-10-17 14:52:37
8 https://www.texarkanatwins.com/%25… 2026-10-17 14:52:37
9 https://pad.stuve.de/s/2uLt5dFwF 2026-10-17 14:52:36
10 https://informacionprevencion.com/ 2026-10-17 14:52:36
11 https://www.texarkanatwins.com/%25… 2026-10-17 14:52:36
12 https://www.thebolditalic.com/?gi=… 2026-10-17 14:52:36
13 https://www.thebolditalic.com/?gi=… 2026-10-17 14:52:36
14 https://www.texarkanatwins.com/%25… 2026-10-17 14:52:35
15 https://triip80.info/ 2026-10-17 14:52:34
16 https://www.texarkanatwins.com/%25… 2026-10-17 14:52:34
17 https://www.thebolditalic.com/?gi=… 2026-10-17 14:52:34
18 https://www.texarkanatwins.com/%25… 2026-10-17 14:52:34
19 https://bestartdeals.com.au/ 2026-10-17 14:52:34
20 https://jojojajan517.wixsite.com/i… 2026-10-17 14:52:33