<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href="https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel="stylesheet"> <link href="https://unpkg.com/nes.css@latest/css/nes.min.css" rel="stylesheet" /> <title>データベース掲示板</title> </head> <body class="bg-pink-50"> <main class="mt-20"> <div class="nes-container is-dark with-title"> <p class="title">Tubuyakisakata</p> <div> <span class="text-sm font-bold text-center">つぶやきばしょ!</span> <div class="p-2 mb-2"> <span class="websocket-status nes-text is-primary">null</span> </div> </div> <section class="my-4"> <div class="p-2 rounded shadow"> <form method="post"> <!--ここのname="name"のnameというのがデータベースに入る--> <label">名前:<input type="text" name="name" style="color: #000;"></label><br> <label>コメント:<br> <!--ここのname="content"のcontentというのがデータベースに入る--> <textarea name="comment" rows="6" cols="60" style="color: #000;" id="send-message"></textarea></label><br> <input type="submit" value="送信" id="send-botton" style="color: #000;"> </form> </div> <section class="my-4"> <div class="text-sm font-bold text-center">メッセージ一覧</div> <p><!--postsに入っているデータを連続で表示させる--> <% for (let data of posts) { %> <!--dataに入っているid.name.date(日付)を表示させる--> <%= data.id %>. <%= data.name %> - <%= data.date %><br> <pre class="bbs"> <!--内容を表示させる--> <%= data.comment %> </pre> <hr> <% } %> <!--ここで連続終了--> <!--中身がからの時のメッセージ表示--> <% if (msg) { %> <p><b><%= msg %></b></p> <% } %> </p> </section> </section> </div> </main> <script> const URL = 'ws://localhost:3000/' const PROTOCOL = 'ws-sample' const socket = new WebSocket(URL, PROTOCOL) // ------------------------------ // WebSocket イベント // ------------------------------ // WebSocket が開通したら発火する // socket.onopen = () => {} でも可 socket.addEventListener('open', (event) => { setWsStatus('つぶやいてくれたまえ') }) // WebSocketサーバ からメッセージを受け取ったら発火する // socket.onmessage = () => {} でも可 socket.addEventListener('message', ({ data }) => { setWsStatus('message: ' + data) appendMessage(data) }) // WebSocketサーバ からエラーメッセージを受け取ったら発火する // socket.onerror = () => {} でも可 socket.addEventListener('error', (event) => { setWsStatus('エラー発生だよ') console.log('error') }) // WebSocket がクローズしたら発火する // socket.onclose = () => {} でも可 socket.addEventListener('close', (event) => { setWsStatus('つぶやき終わり!') console.log('close') }) // ------------------------------ // WebSocket メソッド // ------------------------------ const sendMessage = (message) => { socket.send(message) } const sendMessageEl = document.querySelector('#send-message') const sendButtonEl = document.querySelector('#send-button') sendButtonEl.addEventListener('click', () => { const message = sendMessageEl.value sendMessage(message) sendMessageEl.value = '' }) </script> </body> </html>