Node+socketでシンプルなチャットルーム機能を実現

Node+socketでシンプルなチャットルーム機能を実現

この記事では、参考までに、シンプルなチャットルームを実装するためのnode+socketの具体的なコードを紹介します。具体的な内容は次のとおりです。

サーバ

定数net = require('net')
定数サーバー = net.createServer()

//ユーザーリスト let clients = []

//接続をリッスンする server.on('connection',client=>{
    client.on('data',(チャンク)=>{
        データ = chunk.toString() とする
        if(data.match(/login:(.*)/)){
            name = data.match(/login:(.*)/)[1]とします。
            client.name = 名前
            クライアント.push(クライアント)
            console.log(`ユーザー ${name} はオンラインです`)
        }それ以外{
            for (const クライアントのクライアント) {
                if(client.name!==JSON.parse(data).name){
                    クライアント.write(データ)
                }

            }
        }
    })

    クライアント.on('close',()=>{
        console.log(`ユーザー ${client.name} はオフラインです`)
    })

    client.on('エラー',()=>{
        console.log(`ユーザー ${client.name} にエラーが発生しました`)
    })

})

server.on('エラー',(err)=>{
    console.log('サーバーエラー',err)
})

server.on('close',()=>{
    console.log('サーバーのシャットダウン')
})

サーバー.listen(9527,()=>{
    console.log("サーバーが起動しました")
})

クライアント

定数net = require('net')
定数 readline = require('readline')
//入力情報を読み取る const rl = readline.createInterface({
    入力: process.stdin、
    出力: process.stdout
});

//名前 const name = process.argv[2]
//サーバーに接続する const client = net.createConnection({port:9527},()=>{
    console.log(name+'サーバーに接続');
    client.write(`ログイン:${name}`)
    client.name = 名前
    //情報の送信を開始する sendMsg(client)
})

client.on('data', (チャンク) => {

    データをJSON.parse(chunk.toString()) とします。
    if(データ){
        console.log(`[${data.name}] : ${data.msg}`)
    }
});
クライアント.on('end', () => {
    console.log('サーバーから切断されました');
});
クライアント.on('エラー', () => {
    console.log('サーバーエラー');
});

//再帰出力関数 sendMsg(client){

    rl.question('',(line)=>{
        client.write(JSON.stringify({
            名前:クライアント名、
            メッセージ:行
        }))
        送信メッセージ(クライアント)
    })
}

デモ

サーバ

クライアント 1

クライアント2

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • NodeJSはチャットルーム機能を実装します
  • nodejs+express で複数人チャットルームを構築する手順
  • Nodejs はマルチルームのシンプルなチャットルーム機能を実現します
  • socket.io を使用して Nodejs ベースの複数人チャット ルームを実装する
  • Node.js websocketはsocket.ioライブラリを使用してリアルタイムチャットルームを実装します
  • Node.js ネットモジュールを使用して複数人用のコマンドラインチャットルームを実現する方法
  • Node.js でソケットを使用してプライベートおよびパブリック チャット ルームを作成する
  • AngularJS+Node.js でオンラインチャットルームを実装する
  • Angular、Nodejs、socket.io を使用してチャットルームや複数人用チャットルームを構築します
  • Node.jsで実装されたシンプルなチャットルーム機能共有

<<:  MySql 8.0.16-win64 インストール チュートリアル

>>:  Docker クロスホストネットワークの実装 (手動)

推薦する

HTML ページ適応幅テーブル

WEB アプリケーションのページでは、テーブルがよく使用されます。列の数が限られているため、各列のコ...

Docker Secretの管理と使用の詳細な説明

1. Docker Secretとは1. シナリオ表示MySQL サービスなど、一部のサービスではパ...

MySQL複合インデックスの詳細な研究

複合インデックス (結合インデックスとも呼ばれます) は、複数の列に対して作成されるインデックスです...

ネットワークセグメント内の IP アドレスに対する Nginx の接続制限設定の詳細な説明

Nginx におけるいわゆる接続制限は、実際には TCP 接続、つまり 3 ウェイ ハンドシェイク後...

Linux でのルーティングと仮想マシン ネットワークの設定に関する詳細なグラフィック説明

ルーティングとは何ですか?ルーティングとは、相互接続されたネットワークを介して送信元ステーションから...

Dockerボリュームコンテナ間のデータ共有の実装

ボリュームとは何ですか?ボリュームは英語で容量を意味し、Docker ではデータ ボリューム、つまり...

CSS マージンの重複と解決策の探索の詳細な説明

最近、CSS 関連の知識ポイントをいくつか見直し、CSS における典型的なマージンの重なりの問題を整...

Ubuntu 20.04 ダブルピンイン入力方式のインストール手順

1. 中国語入力方法を設定する 2. ダブルスペルモードを設定する 3. 注意事項20.04 で S...

Ubuntuがインターネットに接続できない場合の解決策

問題の説明:デスクトップ コンピューターとキャンパス ネットワークを使用して、有線モードでインターネ...

JS にこれがあるのはなぜですか?

目次1. 需要2. 解決策3. 最初の改善4.砂糖を加える5. 理解不能6. 問題点7. オブジェク...

MySql インデックスはクエリ速度を向上させる一般的な方法のコード例

インデックスを使用してクエリを高速化する1. はじめにWeb 開発には、ビジネス テンプレート、ビジ...

TCPソケットSYNキューとAcceptキューの差異分析

まず、「LISTENING」状態の TCP ソケットには 2 つの独立したキューがあることを理解する...

正の整数かどうかを判断するMYSQLカスタム関数の例コード

関数を記述できます。主に正規表現を使用して判断を行います。入力文字が空の場合は、「-」を使用して置き...

SSDストレージを有効にしたMySQLインスタンスの詳細な説明

SSDストレージを有効にしたMySQLインスタンスの詳細な説明特に OS と MySQL が同じディ...

vue3で注意すべき2つのポイントを詳しく解説:セットアップ

目次vue2の場合vue3ではセットアップに関する注意事項セットアップライフサイクルは、before...