[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"site-config":3,"topic:html-server-sent-events-sse":6,"blog-categories":85,"course-tree":111},{"data":4},{"google_site_verification":5,"ga4_measurement_id":5,"site_name":5,"default_og_image":5,"twitter_handle":5},null,{"data":7},{"id":8,"title":9,"slug":10,"content":11,"course":12,"subcategory":15,"author":18,"reading_time_minutes":24,"cornerstone":25,"schema_type":26,"faq_json":5,"video_url":5,"canonical_url":27,"meta_title":28,"meta_description":29,"og_image":5,"toc_json":30,"code_examples":58,"quiz":5,"exercises":67,"published_at":5,"updated_at":76,"prev":77,"next":81},66,"HTML Server-Sent Events (SSE)","html-server-sent-events-sse","\u003Ch2 id=\"html-server-sent-events-sse\">HTML Server-Sent Events (SSE)\u003C\u002Fh2>\u003Cp>Server-Sent Events let a server push a continuous stream of updates to a web page over a single, long-lived HTTP connection &mdash; without the browser needing to repeatedly poll or ask for new data. It's a simpler, one-way alternative to WebSockets, ideal whenever data only needs to flow from server to client.\u003C\u002Fp>\u003Ch3 id=\"how-sse-differs-from-websockets\">How SSE Differs from WebSockets\u003C\u002Fh3>\u003Cul>\n\u003Cli>\u003Cstrong>SSE\u003C\u002Fstrong> &mdash; one-way only (server &rarr; client), built on plain HTTP, automatically reconnects, and text-based (UTF-8) only.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>WebSockets\u003C\u002Fstrong> &mdash; two-way (client &lt;-&gt; server), needs its own protocol upgrade, and supports both text and binary data.\u003C\u002Fli>\n\u003C\u002Ful>\u003Cp>If your app only needs to receive live updates (stock tickers, notifications, live scores, progress bars) rather than send data back over the same channel, SSE is usually the simpler and lighter option.\u003C\u002Fp>\u003Ch3 id=\"the-eventsource-interface\">The EventSource Interface\u003C\u002Fh3>\u003Cp>On the client side, SSE is consumed through the built-in \u003Ccode>EventSource\u003C\u002Fcode> object. Creating one and pointing it at a server endpoint automatically opens a persistent connection and starts listening for incoming messages.\u003C\u002Fp>\u003Ch3 id=\"the-server-side\">The Server Side\u003C\u002Fh3>\u003Cp>The server must respond with the \u003Ccode>Content-Type: text\u002Fevent-stream\u003C\u002Fcode> header and keep the connection open, sending each update as a block of text starting with \u003Ccode>data: \u003C\u002Fcode> and ending with two newlines.\u003C\u002Fp>\u003Ch3 id=\"handling-events\">Handling Events\u003C\u002Fh3>\u003Cp>The default \u003Ccode>message\u003C\u002Fcode> event fires for standard updates, but a server can also send named custom events, which the client listens for using \u003Ccode>addEventListener('eventName', ...)\u003C\u002Fcode> instead of the generic \u003Ccode>onmessage\u003C\u002Fcode>.\u003C\u002Fp>\u003Ch3 id=\"automatic-reconnection\">Automatic Reconnection\u003C\u002Fh3>\u003Cp>One of SSE's biggest advantages is that the browser automatically attempts to reconnect if the connection drops, without any extra code needed &mdash; the server can also send a numeric \u003Ccode>id:\u003C\u002Fcode> field with each event so the browser can tell the server where to resume from after reconnecting.\u003C\u002Fp>\u003Ch3 id=\"common-use-cases\">Common Use Cases\u003C\u002Fh3>\u003Cp>Live notifications, stock or crypto price tickers, sports score updates, live dashboards, and progress indicators for long-running server tasks are all classic Server-Sent Events use cases.\u003C\u002Fp>\u003Cdiv class=\"try-it-yourself language-javascript\">\u003Cpre>\u003Ccode>\u002F\u002F Client-side: connecting to an SSE stream\nconst source = new EventSource('\u002Fevents');\n\nsource.onmessage = (event) =&gt; {\n  console.log('New update:', event.data);\n};\n\nsource.addEventListener('priceUpdate', (event) =&gt; {\n  const data = JSON.parse(event.data);\n  console.log('Price updated:', data.symbol, data.price);\n});\n\nsource.onerror = (err) =&gt; {\n  console.error('SSE connection error, browser will auto-reconnect.', err);\n};\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003Cdiv class=\"try-it-yourself language-javascript\">\u003Cpre>\u003Ccode>\u002F\u002F Server-side example (Node.js + Express)\napp.get('\u002Fevents', (req, res) =&gt; {\n  res.setHeader('Content-Type', 'text\u002Fevent-stream');\n  res.setHeader('Cache-Control', 'no-cache');\n  res.setHeader('Connection', 'keep-alive');\n\n  const interval = setInterval(() =&gt; {\n    const payload = JSON.stringify({ symbol: 'AAPL', price: (150 + Math.random()).toFixed(2) });\n    res.write(`event: priceUpdate\\ndata: ${payload}\\n\\n`);\n  }, 2000);\n\n  req.on('close', () =&gt; clearInterval(interval));\n});\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>",{"name":13,"slug":14},"HTML","html-tutorial",{"name":16,"slug":17},"HTML5 Web APIs (Advanced\u002FTrending)","html5-web-apis-advancedtrending",{"slug":19,"display_name":20,"job_title":5,"short_bio":5,"expertise_tags":21,"headshot":5,"long_bio":5,"credentials":5,"twitter_url":5,"linkedin_url":5,"github_url":5,"personal_website_url":5,"other_sameas_urls":5,"topics":22,"posts":23},"badar-khalil","Badar Khalil",[],[],[],2,false,"Article","https:\u002F\u002Fwpfsharp.com\u002Ftopics\u002Fhtml-server-sent-events-sse","HTML Server-Sent Events (SSE): Real-Time Updates Guide","Learn HTML5 Server-Sent Events (SSE) — one-way real-time server-to-browser updates using EventSource, with a Node.js example and reconnection handling.",[31],{"id":10,"text":9,"level":24,"children":32},[33,38,42,46,50,54],{"id":34,"text":35,"level":36,"children":37},"how-sse-differs-from-websockets","How SSE Differs from WebSockets",3,[],{"id":39,"text":40,"level":36,"children":41},"the-eventsource-interface","The EventSource Interface",[],{"id":43,"text":44,"level":36,"children":45},"the-server-side","The Server Side",[],{"id":47,"text":48,"level":36,"children":49},"handling-events","Handling Events",[],{"id":51,"text":52,"level":36,"children":53},"automatic-reconnection","Automatic Reconnection",[],{"id":55,"text":56,"level":36,"children":57},"common-use-cases","Common Use Cases",[],[59,64],{"id":60,"language":61,"code":62,"is_editable":63},144,"javascript","\u002F\u002F Client-side: connecting to an SSE stream\nconst source = new EventSource('\u002Fevents');\n\nsource.onmessage = (event) => {\n  console.log('New update:', event.data);\n};\n\nsource.addEventListener('priceUpdate', (event) => {\n  const data = JSON.parse(event.data);\n  console.log('Price updated:', data.symbol, data.price);\n});\n\nsource.onerror = (err) => {\n  console.error('SSE connection error, browser will auto-reconnect.', err);\n};",true,{"id":65,"language":61,"code":66,"is_editable":63},145,"\u002F\u002F Server-side example (Node.js + Express)\napp.get('\u002Fevents', (req, res) => {\n  res.setHeader('Content-Type', 'text\u002Fevent-stream');\n  res.setHeader('Cache-Control', 'no-cache');\n  res.setHeader('Connection', 'keep-alive');\n\n  const interval = setInterval(() => {\n    const payload = JSON.stringify({ symbol: 'AAPL', price: (150 + Math.random()).toFixed(2) });\n    res.write(`event: priceUpdate\\ndata: ${payload}\\n\\n`);\n  }, 2000);\n\n  req.on('close', () => clearInterval(interval));\n});",[68],{"id":69,"title":70,"slug":71,"prompt":72,"starter_code":73,"expected_output":74,"language":61,"order_index":75},64,"Listen for a Custom SSE Event","listen-for-a-custom-sse-event","Create an EventSource connected to '\u002Fnotifications', and add a listener for a custom event named 'newMessage' that parses the JSON payload and logs the message text.","const source = new EventSource('\u002Fnotifications');\n\n\u002F\u002F TODO: listen for the 'newMessage' custom event and log the parsed message","source.addEventListener('newMessage', (event) => { const data = JSON.parse(event.data); console.log(data.text); });",1,"2026-09-27T18:50:49+00:00",{"id":78,"slug":79,"title":80},65,"html-web-workers-background-processing","HTML Web Workers (Background Processing)",{"id":82,"slug":83,"title":84},67,"html-accessibility-aria-screen-readers","HTML Accessibility (ARIA, Screen Readers)",{"data":86},[87,92,96,101,106],{"name":88,"slug":89,"description":90,"post_count":24,"subcategories":91},"CSS","css","Learn CSS with practical tutorials and examples covering layouts, Flexbox, Grid, responsive design, typography, positioning, animations, and more.",[],{"name":13,"slug":93,"description":94,"post_count":24,"subcategories":95},"html","Learn HTML with practical tutorials and examples for beginners. Explore HTML tags, elements, attributes, links, images, forms, semantic HTML, and more with clear explanations and real code examples.",[],{"name":97,"slug":98,"description":99,"post_count":75,"subcategories":100},"WPF","wpf","Learn WPF with practical tutorials and examples covering XAML, windows, controls, layouts, data binding, MVVM, commands, styles, templates, debugging, and modern WPF UI development.",[],{"name":102,"slug":103,"description":104,"post_count":75,"subcategories":105},"Python","python","Learn Python with practical tutorials covering strings, lists, functions, exceptions, files, packages, virtual environments, modules, classes, and beginner programming concepts.",[],{"name":107,"slug":108,"description":109,"post_count":75,"subcategories":110},"Java","java","Learn Java with practical tutorials and examples for beginners. Explore Java syntax, variables, data types, classes, objects, methods, inheritance, exceptions, collections, and more with clear explanations and real code examples.",[],{"data":112},[113],{"id":75,"name":13,"slug":14,"icon":5,"icon_url":5,"short_description":114,"meta_title":115,"meta_description":116,"og_image":117,"locale":118,"subcategories":119},"Welcome to our HTML Tutorial for Beginners, a complete guide designed to help you learn HTML from the ground up.\n\nHTML, which stands for HyperText Markup Language, is the standard language used to structure content on the web. Whether you want to become a web developer, build your own website, or continue learning CSS and JavaScript, understanding HTML is an essential first step.\n\nThis HTML course takes you through the fundamentals step by step, using simple explanations and practical examples. ","HTML Tutorial for Beginners - Learn HTML Step by Step","Learn HTML from scratch with our beginner-friendly HTML tutorial. Understand HTML tags, elements, forms, tables, links, images, semantic HTML and more with practical examples.","https:\u002F\u002Fwpfsharp.com\u002Fstorage\u002Fcourses\u002Fog\u002F01M2GK0XN45C0B937NF9XFAD4S.webp","en",[120,145,181,205,281,315,329,357,372,385],{"id":75,"name":121,"slug":122,"order_index":75,"topics":123},"HTML Fundamentals & Setup","html-fundamentals-setup",[124,127,130,133,137,141],{"id":75,"title":125,"slug":126,"order_index":75,"cornerstone":25,"reading_time_minutes":75},"HTML Introduction & History","html-introduction-and-history",{"id":24,"title":128,"slug":129,"order_index":75,"cornerstone":25,"reading_time_minutes":24},"HTML Editors & Environment Setup","html-editors-and-environment-setup",{"id":36,"title":131,"slug":132,"order_index":36,"cornerstone":25,"reading_time_minutes":24},"HTML Basic Syntax & Document Structure","html-basic-syntax-document-structure",{"id":134,"title":135,"slug":136,"order_index":134,"cornerstone":25,"reading_time_minutes":24},4,"HTML Elements & Tags Explained","html-elements-tags-explained",{"id":138,"title":139,"slug":140,"order_index":138,"cornerstone":25,"reading_time_minutes":24},5,"HTML Attributes (Global & Standard)","html-attributes-global-standard",{"id":142,"title":143,"slug":144,"order_index":142,"cornerstone":25,"reading_time_minutes":24},6,"Understanding the DOCTYPE & HTML5 Boilerplate","understanding-doctype-html5-boilerplate",{"id":24,"name":146,"slug":147,"order_index":24,"topics":148},"Text & Content Basics","text-content-basics",[149,153,157,161,165,169,173,177],{"id":150,"title":151,"slug":152,"order_index":150,"cornerstone":25,"reading_time_minutes":24},7,"HTML Headings (H1–H6) & SEO Best Practices","html-headings-h1-h6-seo-best-practices",{"id":154,"title":155,"slug":156,"order_index":154,"cornerstone":25,"reading_time_minutes":24},8,"HTML Paragraphs & Line Breaks","html-paragraphs-line-breaks",{"id":158,"title":159,"slug":160,"order_index":158,"cornerstone":25,"reading_time_minutes":75},9,"HTML Text Formatting (Bold, Italic, Mark, etc.)","html-text-formatting-bold-italic-mark",{"id":162,"title":163,"slug":164,"order_index":162,"cornerstone":25,"reading_time_minutes":24},10,"HTML Styles (Inline CSS Basics)","html-styles-inline-css-basics",{"id":166,"title":167,"slug":168,"order_index":166,"cornerstone":25,"reading_time_minutes":24},11,"HTML Quotations & Citations (blockquote, q, cite)","html-quotations-citations-blockquote-q-cite",{"id":170,"title":171,"slug":172,"order_index":170,"cornerstone":25,"reading_time_minutes":24},12,"HTML Comments (Best Practices)","html-comments-best-practices",{"id":174,"title":175,"slug":176,"order_index":174,"cornerstone":25,"reading_time_minutes":24},13,"HTML Colors (Names, HEX, RGB, HSL)","html-colors-names-hex-rgb-hsl",{"id":178,"title":179,"slug":180,"order_index":178,"cornerstone":25,"reading_time_minutes":24},14,"HTML & CSS Integration (Inline, Internal, External)","html-css-integration-inline-internal-external",{"id":36,"name":182,"slug":183,"order_index":36,"topics":184},"Links, Media & Navigation","links-media-navigation",[185,189,193,197,201],{"id":186,"title":187,"slug":188,"order_index":186,"cornerstone":25,"reading_time_minutes":24},15,"HTML Links (Anchor Tags & Hyperlinks)","html-links-anchor-tags-hyperlinks",{"id":190,"title":191,"slug":192,"order_index":190,"cornerstone":25,"reading_time_minutes":24},16,"HTML Images (Alt Text, Lazy Loading, Formats)","html-images-alt-text-lazy-loading-formats",{"id":194,"title":195,"slug":196,"order_index":194,"cornerstone":25,"reading_time_minutes":75},17,"HTML Favicon Setup","html-favicon-setup",{"id":198,"title":199,"slug":200,"order_index":198,"cornerstone":25,"reading_time_minutes":24},18,"HTML Page Title & Meta Tags (SEO Essentials)","html-page-title-meta-tags-seo-essentials",{"id":202,"title":203,"slug":204,"order_index":202,"cornerstone":25,"reading_time_minutes":24},19,"HTML File Paths (Absolute vs Relative)","html-file-paths-absolute-vs-relative",{"id":134,"name":206,"slug":207,"order_index":134,"topics":208},"Structuring Content","structuring-content",[209,214,219,224,229,233,237,241,245,249,253,257,261,265,269,273,277],{"id":210,"title":211,"slug":212,"order_index":213,"cornerstone":25,"reading_time_minutes":24},24,"HTML Tables Explained: Rows, Columns & Merging Cells","html-tables-rows-columns-merging-cells",20,{"id":215,"title":216,"slug":217,"order_index":218,"cornerstone":25,"reading_time_minutes":24},25,"HTML Lists: Ordered, Unordered & Description Lists","html-lists-ordered-unordered-description",21,{"id":220,"title":221,"slug":222,"order_index":223,"cornerstone":25,"reading_time_minutes":24},26,"HTML Block vs Inline Elements Explained","html-block-vs-inline-elements",22,{"id":225,"title":226,"slug":227,"order_index":228,"cornerstone":25,"reading_time_minutes":75},27,"HTML Div & Span: Generic Containers Explained","html-div-and-span-containers",23,{"id":230,"title":231,"slug":232,"order_index":210,"cornerstone":25,"reading_time_minutes":24},28,"HTML Classes vs ID: Selectors Explained","html-classes-vs-id-selectors-explained",{"id":234,"title":235,"slug":236,"order_index":215,"cornerstone":25,"reading_time_minutes":75},29,"HTML Iframes: Embedding External Content","html-iframes-embedding-content",{"id":238,"title":239,"slug":240,"order_index":220,"cornerstone":25,"reading_time_minutes":24},30,"HTML Head Element Deep Dive","html-head-element-deep-dive",{"id":242,"title":243,"slug":244,"order_index":225,"cornerstone":25,"reading_time_minutes":24},31,"HTML Layout Techniques: Header, Nav & Footer","html-layout-techniques-header-nav-footer",{"id":246,"title":247,"slug":248,"order_index":230,"cornerstone":25,"reading_time_minutes":24},32,"Responsive HTML Design: Mobile-First Approach","responsive-html-design-mobile-first-approach",{"id":250,"title":251,"slug":252,"order_index":234,"cornerstone":25,"reading_time_minutes":36},74,"HTML Semantic Elements (article, section, aside, nav)","html-semantic-elements-article-section-aside-nav",{"id":254,"title":255,"slug":256,"order_index":238,"cornerstone":25,"reading_time_minutes":24},75,"HTML Style Guide & Coding Conventions","html-style-guide-coding-conventions",{"id":258,"title":259,"slug":260,"order_index":242,"cornerstone":25,"reading_time_minutes":24},76,"HTML Entities & Special Characters","html-entities-special-characters",{"id":262,"title":263,"slug":264,"order_index":246,"cornerstone":25,"reading_time_minutes":75},77,"HTML Symbols","html-symbols",{"id":266,"title":267,"slug":268,"order_index":266,"cornerstone":25,"reading_time_minutes":75},33,"HTML Emojis 😀: How to Use Them in Web Pages","html-emojis-trending-guide",{"id":270,"title":271,"slug":272,"order_index":270,"cornerstone":25,"reading_time_minutes":24},34,"HTML Character Sets: UTF-8 & Encoding Explained","html-character-sets-utf-8-encoding",{"id":274,"title":275,"slug":276,"order_index":274,"cornerstone":25,"reading_time_minutes":75},35,"HTML URL Encoding Explained","html-url-encoding-explained",{"id":278,"title":279,"slug":280,"order_index":278,"cornerstone":25,"reading_time_minutes":75},36,"HTML vs XHTML: Key Differences","html-vs-xhtml-key-differences",{"id":150,"name":282,"slug":283,"order_index":138,"topics":284},"Forms & User Input","forms-user-input",[285,290,295,300,305,310],{"id":286,"title":287,"slug":288,"order_index":289,"cornerstone":25,"reading_time_minutes":24},49,"HTML Forms Introduction","html-forms-introduction",37,{"id":291,"title":292,"slug":293,"order_index":294,"cornerstone":25,"reading_time_minutes":75},50,"HTML Form Attributes (action, method, etc.)","html-form-attributes-action-method",38,{"id":296,"title":297,"slug":298,"order_index":299,"cornerstone":25,"reading_time_minutes":75},51,"HTML Form Elements (input, select, textarea, button)","html-form-elements-input-select-textarea-button",39,{"id":301,"title":302,"slug":303,"order_index":304,"cornerstone":25,"reading_time_minutes":24},52,"HTML Input Types (Modern Types: email, date, color, range)","html-input-types-modern-email-date-color-range",40,{"id":306,"title":307,"slug":308,"order_index":309,"cornerstone":25,"reading_time_minutes":24},53,"HTML Input Attributes (required, placeholder, pattern)","html-input-attributes-required-placeholder-pattern",41,{"id":311,"title":312,"slug":313,"order_index":314,"cornerstone":25,"reading_time_minutes":24},54,"HTML Form Validation (Client-Side)","html-form-validation-client-side",42,{"id":154,"name":316,"slug":317,"order_index":142,"topics":318},"Graphics & Visuals","graphics-visuals",[319,324],{"id":320,"title":321,"slug":322,"order_index":323,"cornerstone":25,"reading_time_minutes":36},55,"HTML Canvas (2D Drawing API) 🔥","html-canvas-2d-drawing-api",43,{"id":325,"title":326,"slug":327,"order_index":328,"cornerstone":25,"reading_time_minutes":36},56,"HTML SVG (Scalable Vector Graphics)","html-svg-scalable-vector-graphics",44,{"id":158,"name":330,"slug":331,"order_index":150,"topics":332},"Multimedia","multimedia",[333,338,343,348,353],{"id":334,"title":335,"slug":336,"order_index":337,"cornerstone":25,"reading_time_minutes":24},57,"HTML Media Overview","html-media-overview",45,{"id":339,"title":340,"slug":341,"order_index":342,"cornerstone":25,"reading_time_minutes":24},58,"HTML Video Embedding (Native Player)","html-video-embedding-native-player",46,{"id":344,"title":345,"slug":346,"order_index":347,"cornerstone":25,"reading_time_minutes":24},59,"HTML Audio Embedding","html-audio-embedding",47,{"id":349,"title":350,"slug":351,"order_index":352,"cornerstone":25,"reading_time_minutes":24},60,"HTML Plug-ins (Object & Embed Tags)","html-plugins-object-embed-tags",48,{"id":354,"title":355,"slug":356,"order_index":286,"cornerstone":25,"reading_time_minutes":24},61,"Embedding YouTube Videos in HTML","embedding-youtube-videos-in-html",{"id":162,"name":16,"slug":17,"order_index":154,"topics":358},[359,363,367,370,371],{"id":360,"title":361,"slug":362,"order_index":291,"cornerstone":25,"reading_time_minutes":24},62,"HTML Geolocation API","html-geolocation-api",{"id":364,"title":365,"slug":366,"order_index":296,"cornerstone":25,"reading_time_minutes":24},63,"HTML Drag & Drop API","html-drag-and-drop-api",{"id":69,"title":368,"slug":369,"order_index":301,"cornerstone":25,"reading_time_minutes":24},"HTML Web Storage (localStorage & sessionStorage)","html-web-storage-localstorage-sessionstorage",{"id":78,"title":80,"slug":79,"order_index":306,"cornerstone":25,"reading_time_minutes":24},{"id":8,"title":9,"slug":10,"order_index":311,"cornerstone":25,"reading_time_minutes":24},{"id":166,"name":373,"slug":374,"order_index":158,"topics":375},"Accessibility & Best Practices (High-Demand  Skill) �","accessibility-best-practices-high-demand-skill",[376,377,381],{"id":82,"title":84,"slug":83,"order_index":320,"cornerstone":25,"reading_time_minutes":24},{"id":378,"title":379,"slug":380,"order_index":325,"cornerstone":25,"reading_time_minutes":24},68,"Writing Semantic & SEO-Friendly HTML","writing-semantic-and-seo-friendly-html",{"id":382,"title":383,"slug":384,"order_index":334,"cornerstone":25,"reading_time_minutes":24},69,"HTML Performance Optimization Basics","html-performance-optimization-basics",{"id":170,"name":386,"slug":387,"order_index":162,"topics":388},"Reference & Practice","reference-practice",[389,393,397,401,405,409,413,417],{"id":390,"title":391,"slug":392,"order_index":75,"cornerstone":25,"reading_time_minutes":24},70,"HTML Tag List (Full Reference)","html-tag-list-full-reference",{"id":394,"title":395,"slug":396,"order_index":24,"cornerstone":25,"reading_time_minutes":24},71,"HTML Global Attributes Reference","html-global-attributes-reference",{"id":398,"title":399,"slug":400,"order_index":36,"cornerstone":25,"reading_time_minutes":24},72,"HTML Events Reference","html-events-reference",{"id":402,"title":403,"slug":404,"order_index":134,"cornerstone":25,"reading_time_minutes":24},73,"HTML Browser Support & Compatibility","html-browser-support-compatibility",{"id":406,"title":407,"slug":408,"order_index":138,"cornerstone":25,"reading_time_minutes":24},78,"HTML Doctypes Reference","html-doctypes-reference",{"id":410,"title":411,"slug":412,"order_index":142,"cornerstone":25,"reading_time_minutes":24},79,"HTTP Methods & Messages (Basics for Forms\u002FAPIs)","http-methods-messages-basics",{"id":414,"title":415,"slug":416,"order_index":150,"cornerstone":25,"reading_time_minutes":36},80,"HTML Interview Preparation (Top Q&A)","html-interview-preparation-top-qa",{"id":418,"title":419,"slug":420,"order_index":154,"cornerstone":25,"reading_time_minutes":75},81,"HTML Quiz & Practice Exercises","html-quiz-practice-exercises"]