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 クロスホストネットワークの実装 (手動)

推薦する

Jenkins Docker 静的エージェント ノードのビルド プロセス

静的ノードはマシン上に固定されており、いくつかの固定コマンドを通じて起動されます。動的ノードには複数...

Vueはv-modelを使用してel-paginationコンポーネントのプロセス全体をカプセル化します。

v-model を使用してページング情報オブジェクトをバインドします。ページング情報オブジェクトに...

MySQLデータベース移行におけるデータ文字化けの問題を解決する

リーダーの指示のもと、Java プロジェクトを引き継ぎ、リファクタリングを行う必要がありました。同時...

Node.js のイベント モジュールに関する知識ポイントのまとめ

Node の研究と応用を通じて、NodeJS はシングルスレッド、イベント駆動型、非ブロッキング I...

Linuxのtimeコマンドの使い方の詳しい説明

1. コマンドの紹介時間は、コマンドの実行に費やされた時間や関連するシステム リソース、その他の情報...

RR および RC 分離レベルでのインデックスとロックのテスト スクリプトのサンプル コード

基本概念現在の読み取りとスナップショットの読み取りMVCC では、読み取り操作はスナップショット読み...

MySQLにおけるMTRの概念

MTR は Mini-Transaction の略です。名前が示すように、これは「最小のトランザクシ...

Nginx を使用して https ルートドメイン名への 301 リダイレクトを実装するためのサンプル コード

SEO とセキュリティを考慮して、301 リダイレクトが必要です。以下の一般的な処理には Nginx...

弾幕効果を実現するためのjQuery

この記事では、弾幕効果を実現するためのjQueryの具体的なコードを参考までに共有します。具体的な内...

Javascript における分割代入構文の詳細な説明

序文ES6 で初めて導入された「構造化代入構文」を使用すると、配列やオブジェクトの値を異なる変数に挿...

デザイン理論:人の心を理解する方法

<br />かつて、仏印と東坡氏が仏教について雑談していたとき、東坡氏が突然こう言った。...

MySQL 8.0.23 インストールの超詳細なチュートリアル

目次序文1. 公式サイトからMySQLをダウンロードする2. 解凍ファイルを設定する3. 初期化4....

VueはPCカメラを呼び出して写真機能を実現します

この記事の例では、VueがPCカメラを呼び出して写真機能を実現する具体的なコードを参考までに共有して...

Dockerリンクはコンテナの相互接続を実現します

目次1.1. IP経由のコンテナ間のネットワークアクセス1.2. コンテナ名またはコンテナIDによる...

VMware Workstation Pro が Windows で実行されない場合の解決策

国慶節の休暇後、Windows アップデート後に VMware 仮想マシンが開けなくなり、「VMwa...