メインコンテンツへスキップ
見出し画像

WebSocketとSocket.IOで実現!ブラウザ&サーバーのリアルタイム通信

    チャット機能の「超シンプル」な実装例

    以下のコードは、Node.js + Socket.IO を使ったチャットの最小構成です。これだけで、複数人でメッセージを送り合えるようになります。

    • HTTP(普通の通信):ブラウザが「ください」と言って、サーバーが「どうぞ」と返す。一方向。

    • WebSocket(Socket.IO):ブラウザとサーバーが常に繋がった状態になり、どちらからでも自由にメッセージを送れる。ブラウザとサーバー間でリアルタイムな双方向通信を可能にする技術

    1. Node.jsサーバー側 (server.js)

    javascript

    const express = require('express');
    const app = express();
    const http = require('http').createServer(app);
    const io = require('socket.io')(http);
    
    // 静的ファイル(HTML)を配信する設定
    app.use(express.static('public'));
    
    // クライアントが接続した時の処理
    io.on('connection', (socket) => {
        console.log('ユーザーが接続しました');
    
        // クライアントから 'chat message' イベントを受信したら
        socket.on('chat message', (msg) => {
            // 接続している**全員**にそのメッセージを送信(ブロードキャスト)
            io.emit('chat message', msg);
        });
    
        socket.on('disconnect', () => {
            console.log('ユーザーが切断しました');
        });
    });
    
    http.listen(3000, () => {
        console.log('サーバー起動: http://localhost:3000');
    });

    2. クライアント側 (public/index.html)

    html

    <!DOCTYPE html>
    <html>
    <head>
        <title>超簡単チャット</title>
    </head>
    <body>
        <ul id="messages"></ul>
        <input id="input" autocomplete="off" />
        <button id="send">送信</button>
    
        <script src="/socket.io/socket.io.js"></script>
        <script>
            const socket = io(); // サーバーに接続
            const messages = document.getElementById('messages');
            const input = document.getElementById('input');
    
            document.getElementById('send').onclick = () => {
                const msg = input.value;
                if (msg) {
                    // サーバーにメッセージを送信
                    socket.emit('chat message', msg);
                    input.value = '';
                }
            };
    
            // サーバーからメッセージを受信したら、画面に表示
            socket.on('chat message', (msg) => {
                const li = document.createElement('li');
                li.textContent = msg;
                messages.appendChild(li);
            });
        </script>
    </body>
    </html>

    3. 動かし方

    index.htmlとserver.jsという2つのファイルがあれば動きます。

    1.server.js と public/index.html を作成
    2.ターミナルで npm init -y → npm install express socket.io を実行
    3.node server.js でサーバー起動
    4.ブラウザで http://localhost:3000 を開く

    5.別のブラウザやスマホからも同じURLを開くと、リアルタイムで会話できる

    たったこれだけのコードで、複数人チャットが完成します。

    「リアルタイム性」は、これからのWeb体験の当たり前になります。

    チャット、ゲーム、ライブ配信、共同編集、IoT……ユーザー同士が「今」を共有する体験を支える基盤として、WebSocketは必須の技術と言えます。


    あなたへのおすすめ