今回は、Node.jsとWebSocketを使ったリアルタイム通信の仕組みについて学んでいきましょう。最近では、チャットアプリやオンラインゲームなど、リアルタイムでデータをやり取りするアプリケーションが増えてきました。Node.jsとWebSocketを使うことで、簡単にそんなアプリが作れます。
Node.jsは、JavaScriptを使ってサーバーサイドのプログラムを書くための環境です。通常、JavaScriptはブラウザの中で動く言語ですが、Node.jsを使うと、サーバー上でもJavaScriptが動かせるようになります。これにより、フロントエンドとバックエンドを同じ言語で書けるのが大きなメリットです。
WebSocketは、クライアント(例えばブラウザ)とサーバーの間で、双方向に通信ができるプロトコルです。通常のHTTP通信では、クライアントがリクエストを送らないとサーバーはデータを返せませんが、WebSocketを使うと、サーバーから自動的にデータを送ることもできます。これにより、リアルタイムでデータをやり取りすることができるのです。
まずは、Node.jsがインストールされていることを確認してください。公式サイトからダウンロードして、インストールしておきましょう。そして、次のようにしてWebSocketのライブラリをインストールします。
npm install ws
それでは、実際にサーバーを作成してみましょう。以下のコードを server.js というファイルに保存してください。
const WebSocket = require('ws');
const server = new WebSocket.Server({ port: 8080 });
server.on('connection', (socket) => {
console.log('新しい接続がありました!');
socket.on('message', (message) => {
console.log(`受信メッセージ: ${message}`);
socket.send(`あなたが送ったメッセージ: ${message}`);
});
});
console.log('WebSocketサーバーが8080番ポートで起動しました。');
次に、ターミナルを開いて、作成したサーバーを実行します。
node server.js
サーバーが動いている間に、クライアントも作成してみましょう。以下のHTMLコードを index.html というファイルに保存します。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>WebSocketクライアント</title>
</head>
<body>
<h1>WebSocketクライアント</h1>
<input type="text" id="message" placeholder="メッセージを入力">
<button id="sendBtn">送信</button>
<div id="responses"></div>
<script>
const socket = new WebSocket('ws://localhost:8080');
socket.onmessage = function(event) {
const responsesDiv = document.getElementById('responses');
responsesDiv.innerHTML += '<p>' + event.data + '</p>';
};
document.getElementById('sendBtn').onclick = function() {
const messageInput = document.getElementById('message');
socket.send(messageInput.value);
messageInput.value = '';
};
</script>
</body>
</html>
最後に、 index.html ファイルをブラウザで開いてみてください。メッセージを入力して「送信」ボタンを押すと、サーバーにメッセージが送信され、サーバーからの応答が表示されるはずです。
今回はNode.jsとWebSocketを使ったリアルタイム通信の基本について紹介しました。これらを使うことで、インタラクティブなアプリケーションを簡単に作ることができます。