<?xml version="1.0"?>
<oembed><version>1.0</version><provider_name>&#xB77C;&#xC774;&#xBE0C;&#xC2A4;&#xB9C8;&#xD2B8;</provider_name><provider_url>https://atmokpo.com/w</provider_url><author_name>root</author_name><author_url>https://atmokpo.com/w/author/root/</author_url><title>DJango &#xC11C;&#xBC84;&#xAC1C;&#xBC1C;, Django Channels&#xB97C; &#xC774;&#xC6A9;&#xD55C; &#xC2E4;&#xC2DC;&#xAC04; &#xAE30;&#xB2A5; &#xAD6C;&#xD604;&#xD558;&#xAE30; - &#xB77C;&#xC774;&#xBE0C;&#xC2A4;&#xB9C8;&#xD2B8;</title><type>rich</type><width>600</width><height>338</height><html>&lt;blockquote class="wp-embedded-content" data-secret="OQAXBmZeEf"&gt;&lt;a href="https://atmokpo.com/w/38694/"&gt;DJango &#xC11C;&#xBC84;&#xAC1C;&#xBC1C;, Django Channels&#xB97C; &#xC774;&#xC6A9;&#xD55C; &#xC2E4;&#xC2DC;&#xAC04; &#xAE30;&#xB2A5; &#xAD6C;&#xD604;&#xD558;&#xAE30;&lt;/a&gt;&lt;/blockquote&gt;&lt;iframe sandbox="allow-scripts" security="restricted" src="https://atmokpo.com/w/38694/embed/#?secret=OQAXBmZeEf" width="600" height="338" title="&#x201C;DJango &#xC11C;&#xBC84;&#xAC1C;&#xBC1C;, Django Channels&#xB97C; &#xC774;&#xC6A9;&#xD55C; &#xC2E4;&#xC2DC;&#xAC04; &#xAE30;&#xB2A5; &#xAD6C;&#xD604;&#xD558;&#xAE30;&#x201D; &#x2014; &#xB77C;&#xC774;&#xBE0C;&#xC2A4;&#xB9C8;&#xD2B8;" data-secret="OQAXBmZeEf" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" class="wp-embedded-content"&gt;&lt;/iframe&gt;&lt;script&gt;
/*! This file is auto-generated */
!function(d,l){"use strict";l.querySelector&amp;&amp;d.addEventListener&amp;&amp;"undefined"!=typeof URL&amp;&amp;(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&amp;&amp;!/[^a-zA-Z0-9]/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret="'+t.secret+'"]'),o=l.querySelectorAll('blockquote[data-secret="'+t.secret+'"]'),c=new RegExp("^https?:$","i"),i=0;i&lt;o.length;i++)o[i].style.display="none";for(i=0;i&lt;a.length;i++)s=a[i],e.source===s.contentWindow&amp;&amp;(s.removeAttribute("style"),"height"===t.message?(1e3&lt;(r=parseInt(t.value,10))?r=1e3:~~r&lt;200&amp;&amp;(r=200),s.height=r):"link"===t.message&amp;&amp;(r=new URL(s.getAttribute("src")),n=new URL(t.value),c.test(n.protocol))&amp;&amp;n.host===r.host&amp;&amp;l.activeElement===s&amp;&amp;(d.top.location.href=t.value))}},d.addEventListener("message",d.wp.receiveEmbedMessage,!1),l.addEventListener("DOMContentLoaded",function(){for(var e,t,s=l.querySelectorAll("iframe.wp-embedded-content"),r=0;r&lt;s.length;r++)(t=(e=s[r]).getAttribute("data-secret"))||(t=Math.random().toString(36).substring(2,12),e.src+="#?secret="+t,e.setAttribute("data-secret",t)),e.contentWindow.postMessage({message:"ready",secret:t},"*")},!1)))}(window,document);
//# sourceURL=https://atmokpo.com/w/wp-includes/js/wp-embed.min.js
&lt;/script&gt;
</html><description>&lt;h2&gt;Chat Room&lt;/h2&gt; &lt;div id=&#x201D;chat-log&#x201D;&gt;&lt;/div&gt; &lt;input type=&#x201D;text&#x201D; id=&#x201D;username&#x201D; placeholder=&#x201D;Enter your name&#x201D; /&gt; &lt;input type=&#x201D;text&#x201D; id=&#x201D;message&#x201D; placeholder=&#x201D;Message&#x201D; /&gt; &lt;button id=&#x201D;send&#x201D;&gt;Send&lt;/button&gt; &lt;script&gt; $(document).ready(function(){ const roomName = &#x201C;{{ room_name }}&#x201D;; const chatSocket = new WebSocket( &#x2018;ws://&#x2019; + window.location.host + &#x2018;/ws/chat/&#x2019; + roomName + &#x2018;/&#x2019; ); chatSocket.onmessage = function(e) { const data = JSON.parse(e.data); $(&#x2018;#chat-log&#x2019;).append(data.username + &#x201C;: &#x201D; + data.message &hellip; &#xB354; &#xBCF4;&#xAE30; ""</description></oembed>
