Node.jsを使用したWebSocketチャットルームの作成方法


  1. Expressアプリケーションのセットアップ: Node.jsのプロジェクトディレクトリを作成し、Expressフレームワークをインストールします。

    mkdir chat-room
    cd chat-room
    npm init -y
    npm install express
  2. WebSocketサーバーの設定: ExpressアプリケーションにWebSocketサーバーを追加します。WebSocketの通信を処理するためのライブラリとして、websocketパッケージを使用します。

    npm install websocket

    Expressアプリケーションのエントリーポイント(通常はapp.jsindex.js)に以下のコードを追加します。

    const express = require('express');
    const http = require('http');
    const websocket = require('websocket');
    const app = express();
    const server = http.createServer(app);
    const wsServer = new websocket.server({
     httpServer: server,
    });
    // WebSocketの接続を処理するコードをここに追加します
    server.listen(3000, () => {
     console.log('Server started on port 3000');
    });
  3. WebSocket接続の処理: WebSocketの接続を処理するために、wsServerオブジェクトのon('request', callback)メソッドを使用します。以下は、簡単な例です。

    wsServer.on('request', (request) => {
     const connection = request.accept(null, request.origin);
     connection.on('message', (message) => {
       // メッセージの受信処理をここに追加します
     });
     connection.on('close', (reasonCode, description) => {
       // 接続が閉じられた時の処理をここに追加します
     });
    });
  4. チャットルームの実装: チャットルームの実装には、メッセージの送信や受信、ユーザーの管理などが含まれます。以下は、簡単な例です。

    const connections = [];
    wsServer.on('request', (request) => {
     const connection = request.accept(null, request.origin);
     connections.push(connection);
     connection.on('message', (message) => {
       connections.forEach((conn) => {
         conn.send(message.utf8Data);
       });
     });
     connection.on('close', (reasonCode, description) => {
       const index = connections.indexOf(connection);
       connections.splice(index, 1);
     });
    });

これで、Node.jsを使用してシンプルなWebSocketチャットルームを作成する方法がわかりました。この基本的なコードを拡張したり、フロントエンドのUIを追加することで、より機能豊富なチャットアプリケーションを作ることができます。