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

推薦する

JS ネイティブ 2048 ゲーム ソース コード共有 (インターネットの最新情報)

最近、アルゴリズムについて学んでいて、アルゴリズムで動く小さなゲームに出会いました。そのコードは次の...

Vue の親子コンポーネントの値転送と一方向データフローの問題の詳細な説明

目次序文1. 親コンポーネントが子コンポーネントに値を渡す2. サブコンポーネントのprops型制約...

hr 水平線スタイルの例コード

コードをコピーコードは次のとおりです。 <hr style="width:490px...

MySQL で制限を使用するとパフォーマンスに影響するのはなぜですか?

まず、MySQL のバージョンについて説明します。 mysql> バージョンを選択します();...

CSS で写真のスタッキング効果を実装するサンプルコード

成果を達成するステップ1. 初期index.html最初の写真、一番上の写真を作成します。写真の i...

vxe-table を使用して vue で編集可能なテーブルを作成するプロセス

プロジェクトには、オンラインで編集する必要があるテーブルがあります。最初は、要素の el-table...

React、Angular、Vueの3つの主要なフロントエンド技術の詳細説明

目次1. 反応する基本的な使い方注目すべき機能クラスコンポーネント仮想DOMライフサイクルメソッドJ...

MySQLクエリで大文字と小文字を区別しない問題を解決する方法

質問最近、SSH フレームワークを使用して実用的なプロジェクトを完了していたときに、長い間悩まされて...

HTML(CSSスタイル仕様)を読む必要があります

CSS スタイル仕様1. クラスセレクター2. タグセレクター3. IDセレクター4. CSSスタイ...

Linux ファイルとユーザー管理の実践

1. /etc ディレクトリ内の、文字以外の文字で始まり、その後に文字と任意の長さのその他の文字が続...

HTML タグ マーキーを使用してスクロール効果を実現する簡単な方法 (必読)

ページの自動スクロール効果は JavaScript で実現できますが、今日偶然、JS 制御なしでさま...

ウェブページの読み込み速度を上げる6つのヒント

第二に、キーワードのランキングは、Webページの表示速度にも関係しています(参照:キーワードランキン...

MySQL 8.0 アップグレード体験

目次序文1. まず、既存のバージョンの MySQL を完全にアンインストールします。 2. deb ...

MySQLデータベースの追加、削除、変更操作の詳細な説明

データの挿入テーブル名(列名1、列名2、列名3)の値(値1、値2、値3)に挿入します。ユーザーに(u...

MySQL トランザクション分離レベルと MVCC の詳細な説明

目次トランザクション分離レベル同時トランザクション実行中に発生した問題SQL標準の4つの分離レベルM...