Nodejs チャット ルームは書きやすいですか?

WBOY
リリース: 2023-05-11 19:38:05
オリジナル
393 人が閲覧しました

Node.js チャット ルーム: ステップ バイ ステップ

チャット ルームは、リアルタイムの対話とユーザー エクスペリエンスの点で非常に便利なアプリケーションです。最新の Web 開発テクノロジでは、Node.js を使用すると、効率的でリアルタイムのチャット ルームを迅速に構築でき、優れた結果が得られます。この記事では、Node.js チャット ルームの実装について説明し、Node.js チャット ルームが一般的である理由と構築方法を探ります。

サーバーとクライアントの両方が使用できるプログラミング言語が必要です。この場合は、Node.js の使用を検討します。 Node.js には、PHP や Java などの他のバックエンド言語に比べて多くの利点があります。その中で最も重要なのは、イベント駆動型になるように設計されていることです。これにより、多数の同時接続の処理が向上し、リアルタイム アプリケーションでのデータの高速処理が可能になります。

前提条件

Node.js チャット ルームを構築する最初のステップは、Node.js と npm (Node.js パッケージ マネージャー) をインストールすることです。ターミナルを開いて次のコマンドを入力します:

    $ sudo apt-get update
    $ sudo apt-get install nodejs
    $ sudo apt-get install npm
ログイン後にコピー

npm を使用して次の 3 つのモジュールをインストールします:

•ソケット.io: Web ソケットを使いやすくします。

• Express: Web アプリケーション開発用。

• nodemon: アプリケーションを監視し、変更が発生したときに再起動するために使用されます。

次のコマンドを実行してインストールします。

    $ sudo npm install socket.io express nodemon
ログイン後にコピー

これで、Node.js を使用してチャット ルームの構築を開始する準備が整いました。

1. Web サーバーの作成

Node.js チャット ルームの最初のステップは、指定されたポートでリッスンする Web サーバーを作成することです。これを行うことができます:

    const app = require('express')();
    const server = require('http').Server(app);
    const io = require('socket.io')(server);

    app.get('/', (req, res) => {
        res.sendFile(__dirname + '/index.html');
    });

    server.listen(3000, () => {
        console.log('listening on *:3000');
    });
ログイン後にコピー

このコードは、最初に express モジュールを使用して HTTP サーバーを作成し、次に socket.io モジュールを使用して Web ソケット サーバーを作成し、最後にサーバーがポート 3000 でリッスンして実行されるように設定します。ブラウザ上で。 app.get() メソッドは、index.html ファイルをブラウザに表示するために使用されます。

2. クライアントで接続を開きます

2 つの手順の後、ブラウザはサーバー上の Web ソケットに接続します:

a. HTML でソケットを参照します。

次の 2 行のコードを HTML ファイルに追加して、socket.io-client を参照できるようにします:

    
    
ログイン後にコピー

b. クライアントで接続を開きます

WebSocket 接続を開き、クライアントがサーバー上のソケットに接続できるようにします。コードは次のとおりです。

    const socket = io();
ログイン後にコピー

Node.js サーバーに接続し、未完成の WebSocket を返して、ソケットを介してメッセージの送受信を開始できるようにします。

  1. 特定のルームへのメッセージ送信の実装

これで、サーバーは端末間の接続を受信できるようになりました。次に、特定のルーム接続にメッセージを送信する方法を見ていきます。

    socket.on('join', (room) => {
        socket.join(room);
    });

    socket.on('message', (msg, room) => {
        socket.to(room).emit('message', msg);
    });
ログイン後にコピー

コードでは、サーバー上のソケットの .join() メソッドを使用して、指定されたルームに参加します。サーバーは、クライアントが「参加」メッセージを送信したときにこれを実行します。次にサーバーは、.to() メソッドを使用して、ターゲット ルーム内のすべてのユーザーにメッセージをブロードキャストします。

これは、メッセージを送信する次のコマンドで実行できます:

    socket.emit('message', 'Hello World', 'room1');
ログイン後にコピー
  1. グループ チャット

次のステップは、グループ チャットを追加することです。サーバー。これを実現する方法は次のとおりです。

    const users = {};

    socket.on('new-connection', () => {
        users[socket.id] = { name: `User ${Math.floor(Math.random() * 1000)}` };
        socket.broadcast.emit('user-connected', users[socket.id]);
    });

    socket.on('chat-message', (msg) => {
        socket.broadcast.emit('chat-message', { message: msg, name: users[socket.id].name });
    });

    socket.on('disconnect', () => {
        socket.broadcast.emit('user-disconnected', users[socket.id]);
        delete users[socket.id];
    });
ログイン後にコピー

まず、サーバーに接続しているすべてのユーザーを格納する「users」という変数を作成します。ユーザーがサーバーに接続すると、それに対応するオブジェクトが「users」変数に格納され、「ユーザー接続」メッセージが他のすべてのユーザーにブロードキャストされ、新しいユーザーに「users」変数が配信されます。

ユーザーがサーバーにメッセージを送信すると、これらのメッセージは元の送信者を含む他のすべてのユーザーにブロードキャストされます。ユーザーが切断すると、「user-disconnected」イベントがブロードキャストされ、対応するユーザーが「users」変数から削除されます。

Node.js チャット ルームをデプロイする準備ができました。次のコマンドを実行すると、ローカル ブラウザでチャット ルームを表示できます:

    $ nodemon index.js
ログイン後にコピー

結論

この記事では、Node.js とソケットを使用してライブ チャットを作成する方法を学習しました。イオアプリ。まず Web サーバーを作成し、次にクライアントで接続を開いて特定のルームにメッセージを送信する方法を確認しました。サーバーに接続しているすべてのユーザーが相互にメッセージを送信できるグループ チャット機能を追加しました。

Node.js は、クライアント側とサーバー側の間でリアルタイム Web 機能を簡単に実装できる優れたツールとライブラリを提供します。さらに、socket.io は取り扱いを容易にする機能を提供します。この記事が、Node.js を使用したチャット アプリケーションの作成を始めるのに役立つことを願っています。

以上がNodejs チャット ルームは書きやすいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!