{"id":583,"date":"2025-09-01T11:39:47","date_gmt":"2025-09-01T11:39:47","guid":{"rendered":"https:\/\/1v0.net\/blog\/?p=583"},"modified":"2025-09-01T11:39:49","modified_gmt":"2025-09-01T11:39:49","slug":"how-to-use-laravel-broadcasting-with-pusher-and-websockets","status":"publish","type":"post","link":"https:\/\/1v0.net\/blog\/how-to-use-laravel-broadcasting-with-pusher-and-websockets\/","title":{"rendered":"How to Use Laravel Broadcasting with Pusher and WebSockets"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\"><strong>How to Use Laravel Broadcasting with Pusher and WebSockets<\/strong><\/h1>\n\n\n\n<p>Real-time features like notifications, chats, and dashboards bring apps to life. Laravel Broadcasting makes it simple to broadcast server-side events to connected clients over WebSockets. In this guide, we\u2019ll configure broadcasting with Pusher, show how to use Laravel WebSockets as an alternative, create an event, and listen on the frontend with JavaScript.<\/p>\n\n\n\n<div class=\"wp-block-spacer\" style=\"height:100px\" aria-hidden=\"true\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What is Pusher?<\/strong><\/h2>\n\n\n\n<p><strong>Pusher<\/strong> is a hosted service that provides APIs and infrastructure for real-time communication over WebSockets. Instead of building and scaling your own WebSocket server, Pusher manages the connections, scaling, authentication, and delivery of messages between clients and your Laravel app. It\u2019s widely used for chat apps, notifications, live dashboards, and collaborative tools.<\/p>\n\n\n\n<p>When you broadcast an event in Laravel with the <code>pusher<\/code> driver, the event payload is sent to the Pusher service. From there, Pusher instantly pushes the data to all subscribed clients over WebSockets. This makes it possible for hundreds or thousands of users to see updates live without refreshing the page.<\/p>\n\n\n\n<p><strong>Benefits of using Pusher:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Zero infrastructure overhead<\/strong> \u2013 No need to maintain your own WebSocket servers.<\/li>\n<li><strong>Scalable<\/strong> \u2013 Handles thousands of concurrent connections effortlessly.<\/li>\n<li><strong>Reliable delivery<\/strong> \u2013 Provides guaranteed message delivery with retries.<\/li>\n<li><strong>Cross-platform support<\/strong> \u2013 Works with web, iOS, and Android clients.<\/li>\n<li><strong>Simple integration<\/strong> \u2013 Works seamlessly with Laravel Echo.<\/li>\n<\/ul>\n\n\n\n<p>While Pusher is a paid service (with a free tier for small projects), it\u2019s ideal for apps that want a reliable, managed WebSocket solution without the hassle of scaling servers. If you want a self-hosted alternative, <a href=\"https:\/\/beyondco.de\/docs\/laravel-websockets\" target=\"_blank\" rel=\"noopener\">Laravel WebSockets<\/a> is a great option.<\/p>\n\n\n\n<div class=\"wp-block-spacer\" style=\"height:100px\" aria-hidden=\"true\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Pusher vs Laravel WebSockets<\/strong><\/h2>\n\n\n\n<p>Not sure whether to use Pusher or Laravel WebSockets? Here\u2019s a quick comparison:<\/p>\n\n\n\n<table class=\"wp-block-table\"><tbody>\n<tr>\n<td><strong>Feature<\/strong><\/td>\n<td><strong>Pusher<\/strong><\/td>\n<td><strong>Laravel WebSockets<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>Hosting<\/strong><\/td>\n<td>Managed SaaS (cloud)<\/td>\n<td>Self-hosted in your Laravel app<\/td>\n<\/tr>\n<tr>\n<td><strong>Setup<\/strong><\/td>\n<td>Very easy (just add API keys)<\/td>\n<td>Requires package install + server setup<\/td>\n<\/tr>\n<tr>\n<td><strong>Scaling<\/strong><\/td>\n<td>Automatic scaling by Pusher<\/td>\n<td>You scale your own server<\/td>\n<\/tr>\n<tr>\n<td><strong>Cost<\/strong><\/td>\n<td>Free tier, then paid monthly<\/td>\n<td>Free (your server costs only)<\/td>\n<\/tr>\n<tr>\n<td><strong>Best For<\/strong><\/td>\n<td>Teams who want simplicity and reliability<\/td>\n<td>Teams who want full control and avoid recurring costs<\/td>\n<\/tr>\n<\/tbody><\/table>\n\n\n\n<div class=\"wp-block-spacer\" style=\"height:100px\" aria-hidden=\"true\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Configure Broadcasting in Laravel<\/strong><\/h2>\n\n\n\n<p>First, install the required packages. If you\u2019re using <strong>Pusher<\/strong>, install the PHP SDK:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"Bash\" data-shcb-language-slug=\"bash\"><span><code class=\"hljs language-bash\">composer require pusher\/pusher-php-server<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Bash<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">bash<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Then, update your <code>.env<\/code> file with your Pusher credentials:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"Bash\" data-shcb-language-slug=\"bash\"><span><code class=\"hljs language-bash\">BROADCAST_DRIVER=pusher\n\nPUSHER_APP_ID=your-app-id\nPUSHER_APP_KEY=your-app-key\nPUSHER_APP_SECRET=your-app-secret\nPUSHER_APP_CLUSTER=mt1<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Bash<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">bash<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>For local development without external services, you can use the <a href=\"https:\/\/beyondco.de\/docs\/laravel-websockets\" target=\"_blank\" rel=\"noopener\">Laravel WebSockets<\/a> package as a Pusher-compatible replacement.<\/p>\n\n\n\n<div class=\"wp-block-spacer\" style=\"height:100px\" aria-hidden=\"true\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Create a Broadcastable Event<\/strong><\/h2>\n\n\n\n<p>Next, generate an event that implements <code>ShouldBroadcast<\/code>. For example, a new chat message:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"Bash\" data-shcb-language-slug=\"bash\"><span><code class=\"hljs language-bash\">php artisan make:event MessageSent<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Bash<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">bash<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\">\/\/ app\/Events\/MessageSent.php<\/span>\n<span class=\"hljs-keyword\">namespace<\/span> <span class=\"hljs-title\">App<\/span>\\<span class=\"hljs-title\">Events<\/span>;\n\n<span class=\"hljs-keyword\">use<\/span> <span class=\"hljs-title\">Illuminate<\/span>\\<span class=\"hljs-title\">Broadcasting<\/span>\\<span class=\"hljs-title\">InteractsWithSockets<\/span>;\n<span class=\"hljs-keyword\">use<\/span> <span class=\"hljs-title\">Illuminate<\/span>\\<span class=\"hljs-title\">Broadcasting<\/span>\\<span class=\"hljs-title\">PrivateChannel<\/span>;\n<span class=\"hljs-keyword\">use<\/span> <span class=\"hljs-title\">Illuminate<\/span>\\<span class=\"hljs-title\">Contracts<\/span>\\<span class=\"hljs-title\">Broadcasting<\/span>\\<span class=\"hljs-title\">ShouldBroadcast<\/span>;\n<span class=\"hljs-keyword\">use<\/span> <span class=\"hljs-title\">Illuminate<\/span>\\<span class=\"hljs-title\">Foundation<\/span>\\<span class=\"hljs-title\">Events<\/span>\\<span class=\"hljs-title\">Dispatchable<\/span>;\n<span class=\"hljs-keyword\">use<\/span> <span class=\"hljs-title\">Illuminate<\/span>\\<span class=\"hljs-title\">Queue<\/span>\\<span class=\"hljs-title\">SerializesModels<\/span>;\n<span class=\"hljs-keyword\">use<\/span> <span class=\"hljs-title\">App<\/span>\\<span class=\"hljs-title\">Models<\/span>\\<span class=\"hljs-title\">Message<\/span>;\n\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">MessageSent<\/span> <span class=\"hljs-keyword\">implements<\/span> <span class=\"hljs-title\">ShouldBroadcast<\/span>\n<\/span>{\n    <span class=\"hljs-keyword\">use<\/span> <span class=\"hljs-title\">Dispatchable<\/span>, <span class=\"hljs-title\">InteractsWithSockets<\/span>, <span class=\"hljs-title\">SerializesModels<\/span>;\n\n    <span class=\"hljs-keyword\">public<\/span> $message;\n\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">__construct<\/span><span class=\"hljs-params\">(Message $message)<\/span>\n    <\/span>{\n        <span class=\"hljs-keyword\">$this<\/span>-&gt;message = $message;\n    }\n\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">broadcastOn<\/span><span class=\"hljs-params\">()<\/span>: <span class=\"hljs-title\">array<\/span>\n    <\/span>{\n        <span class=\"hljs-keyword\">return<\/span> &#91;<span class=\"hljs-keyword\">new<\/span> PrivateChannel(<span class=\"hljs-string\">'chat.'<\/span>.<span class=\"hljs-keyword\">$this<\/span>-&gt;message-&gt;chat_id)];\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This event broadcasts messages to a private chat channel, e.g. <code>chat.1<\/code>. You can scope channels by user, team, or resource ID.<\/p>\n\n\n\n<div class=\"wp-block-spacer\" style=\"height:100px\" aria-hidden=\"true\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Broadcasting from a Controller<\/strong><\/h2>\n\n\n\n<p>After saving a message, dispatch the event in your controller:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\">\/\/ app\/Http\/Controllers\/ChatController.php<\/span>\n<span class=\"hljs-keyword\">namespace<\/span> <span class=\"hljs-title\">App<\/span>\\<span class=\"hljs-title\">Http<\/span>\\<span class=\"hljs-title\">Controllers<\/span>;\n\n<span class=\"hljs-keyword\">use<\/span> <span class=\"hljs-title\">App<\/span>\\<span class=\"hljs-title\">Models<\/span>\\<span class=\"hljs-title\">Message<\/span>;\n<span class=\"hljs-keyword\">use<\/span> <span class=\"hljs-title\">App<\/span>\\<span class=\"hljs-title\">Events<\/span>\\<span class=\"hljs-title\">MessageSent<\/span>;\n<span class=\"hljs-keyword\">use<\/span> <span class=\"hljs-title\">Illuminate<\/span>\\<span class=\"hljs-title\">Http<\/span>\\<span class=\"hljs-title\">Request<\/span>;\n\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ChatController<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Controller<\/span>\n<\/span>{\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">send<\/span><span class=\"hljs-params\">(Request $request)<\/span>\n    <\/span>{\n        $message = Message::create(&#91;\n            <span class=\"hljs-string\">'chat_id'<\/span> =&gt; $request-&gt;chat_id,\n            <span class=\"hljs-string\">'user_id'<\/span> =&gt; auth()-&gt;id(),\n            <span class=\"hljs-string\">'body'<\/span> =&gt; $request-&gt;body,\n        ]);\n\n        broadcast(<span class=\"hljs-keyword\">new<\/span> MessageSent($message))-&gt;toOthers();\n\n        <span class=\"hljs-keyword\">return<\/span> response()-&gt;json(&#91;<span class=\"hljs-string\">'status'<\/span> =&gt; <span class=\"hljs-string\">'Message sent!'<\/span>]);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><code>broadcast()<\/code> sends the event to all connected clients except the sender (<code>toOthers()<\/code>).<\/p>\n\n\n\n<div class=\"wp-block-spacer\" style=\"height:100px\" aria-hidden=\"true\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Listening on the Frontend<\/strong><\/h2>\n\n\n\n<p>Laravel Echo is a JavaScript library that makes subscribing to channels simple. Install it via NPM:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"Bash\" data-shcb-language-slug=\"bash\"><span><code class=\"hljs language-bash\">npm install laravel-echo pusher-js --save<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Bash<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">bash<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Configure Echo in your <code>resources\/js\/bootstrap.js<\/code> or <code>app.js<\/code> file:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">import<\/span> Echo <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'laravel-echo'<\/span>;\n<span class=\"hljs-keyword\">import<\/span> Pusher <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'pusher-js'<\/span>;\n\n<span class=\"hljs-built_in\">window<\/span>.Pusher = Pusher;\n\n<span class=\"hljs-built_in\">window<\/span>.Echo = <span class=\"hljs-keyword\">new<\/span> Echo({\n    <span class=\"hljs-attr\">broadcaster<\/span>: <span class=\"hljs-string\">'pusher'<\/span>,\n    <span class=\"hljs-attr\">key<\/span>: <span class=\"hljs-keyword\">import<\/span>.meta.env.VITE_PUSHER_APP_KEY,\n    <span class=\"hljs-attr\">cluster<\/span>: <span class=\"hljs-keyword\">import<\/span>.meta.env.VITE_PUSHER_APP_CLUSTER,\n    <span class=\"hljs-attr\">forceTLS<\/span>: <span class=\"hljs-literal\">true<\/span>\n});<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Now listen for the event on the frontend:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-built_in\">window<\/span>.Echo.private(<span class=\"hljs-string\">'chat.1'<\/span>)\n    .listen(<span class=\"hljs-string\">'MessageSent'<\/span>, (e) =&gt; {\n        <span class=\"hljs-built_in\">console<\/span>.log(<span class=\"hljs-string\">'New message:'<\/span>, e.message.body);\n        <span class=\"hljs-keyword\">const<\/span> messages = <span class=\"hljs-built_in\">document<\/span>.getElementById(<span class=\"hljs-string\">'messages'<\/span>);\n        messages.innerHTML += <span class=\"hljs-string\">`&lt;li&gt;<span class=\"hljs-subst\">${e.message.body}<\/span>&lt;\/li&gt;`<\/span>;\n    });<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Whenever a new message is sent to <code>chat.1<\/code>, connected clients instantly receive it without refreshing.<\/p>\n\n\n\n<div class=\"wp-block-spacer\" style=\"height:100px\" aria-hidden=\"true\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>UI Example: Real-Time Chat Box<\/strong><\/h2>\n\n\n\n<p>Here\u2019s a minimal Blade view with a real-time chat interface:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">&lt;div id=<span class=\"hljs-string\">\"chat\"<\/span>&gt;\n  &lt;ul id=<span class=\"hljs-string\">\"messages\"<\/span>&gt;&lt;\/ul&gt;\n  &lt;form id=<span class=\"hljs-string\">\"chat-form\"<\/span> method=<span class=\"hljs-string\">\"POST\"<\/span> action=<span class=\"hljs-string\">\"\/chat\/send\"<\/span>&gt;\n    @csrf\n    &lt;input type=<span class=\"hljs-string\">\"text\"<\/span> name=<span class=\"hljs-string\">\"body\"<\/span> placeholder=<span class=\"hljs-string\">\"Type a message...\"<\/span>&gt;\n    &lt;button type=<span class=\"hljs-string\">\"submit\"<\/span>&gt;Send&lt;\/button&gt;\n  &lt;\/form&gt;\n&lt;\/div&gt;\n\n&lt;script&gt;\ndocument.getElementById(<span class=\"hljs-string\">'chat-form'<\/span>).addEventListener(<span class=\"hljs-string\">'submit'<\/span>, async (e) =&gt; {\n  e.preventDefault();\n  <span class=\"hljs-keyword\">const<\/span> body = e.target.body.value;\n  await fetch(<span class=\"hljs-string\">'\/chat\/send'<\/span>, {\n    method: <span class=\"hljs-string\">'POST'<\/span>,\n    headers: {<span class=\"hljs-string\">'X-CSRF-TOKEN'<\/span>: <span class=\"hljs-string\">'{{ csrf_token() }}'<\/span>,<span class=\"hljs-string\">'Content-Type'<\/span>:<span class=\"hljs-string\">'application\/json'<\/span>},\n    body: JSON.stringify({ chat_id: <span class=\"hljs-number\">1<\/span>, body })\n  });\n  e.target.reset();\n});\n&lt;\/script&gt;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This chat form submits messages, which are broadcasted via the event and instantly appended to the message list.<\/p>\n\n\n\n<div class=\"wp-block-spacer\" style=\"height:100px\" aria-hidden=\"true\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Wrapping Up<\/strong><\/h2>\n\n\n\n<p>With Laravel Broadcasting, Pusher, or Laravel WebSockets, you can implement real-time features like chat, notifications, and dashboards. We explained what Pusher is, compared it with Laravel WebSockets, configured broadcasting, created a <code>MessageSent<\/code> event, listened with Laravel Echo, and built a simple chat UI. This foundation lets you add interactive, live features to your Laravel apps.<\/p>\n\n\n\n<div class=\"wp-block-spacer\" style=\"height:100px\" aria-hidden=\"true\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What\u2019s Next<\/strong><\/h2>\n\n\n\n<p>Explore more real-time and event-driven features with these guides:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"\/blog\/laravel-events-and-listeners-a-complete-guide\">Laravel Events and Listeners: A Complete Guide<\/a><\/li>\n<li><a href=\"\/blog\/how-to-use-laravel-observers-for-model-events\">How to Use Laravel Observers for Model Events<\/a><\/li>\n<li><a href=\"\/blog\/laravel-horizon-vs-queue-workers-which-one-should-you-use\">Laravel Horizon vs Queue Workers: Which One Should You Use?<\/a><\/li>\n<\/ul>\n\n","protected":false},"excerpt":{"rendered":"<p>How to Use Laravel Broadcasting with Pusher and WebSockets Real-time features like notifications, chats, and dashboards bring apps to life. Laravel Broadcasting makes it simple to broadcast server-side events to connected clients over WebSockets. In this guide, we\u2019ll configure broadcasting with Pusher, show how to use Laravel WebSockets as an alternative, create an event, and [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":587,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[124,128,125,127,126],"class_list":["post-583","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-broadcasting","tag-laravel-echo","tag-pusher","tag-realtime","tag-websockets"],"_links":{"self":[{"href":"https:\/\/1v0.net\/blog\/wp-json\/wp\/v2\/posts\/583","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/1v0.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/1v0.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/1v0.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/1v0.net\/blog\/wp-json\/wp\/v2\/comments?post=583"}],"version-history":[{"count":1,"href":"https:\/\/1v0.net\/blog\/wp-json\/wp\/v2\/posts\/583\/revisions"}],"predecessor-version":[{"id":586,"href":"https:\/\/1v0.net\/blog\/wp-json\/wp\/v2\/posts\/583\/revisions\/586"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/1v0.net\/blog\/wp-json\/wp\/v2\/media\/587"}],"wp:attachment":[{"href":"https:\/\/1v0.net\/blog\/wp-json\/wp\/v2\/media?parent=583"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/1v0.net\/blog\/wp-json\/wp\/v2\/categories?post=583"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/1v0.net\/blog\/wp-json\/wp\/v2\/tags?post=583"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}