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

推薦する

JavaScript はモーダルボックスのドラッグ効果を実現します

これはモーダル ボックスのドラッグのケースです。ここで実装する関数は次のとおりです。 1. ポップア...

vuexの強制リフレッシュによるデータ損失問題の分析

vuex 永続状態基本原則: すべての vuex データをローカルストレージに保存し、ページが更新さ...

MySQL 8.0 再帰クエリの簡単な使用例

序文この記事では、MySQL 8.0 の新機能を使用して再帰クエリを実装します。詳細なサンプル コー...

ウェブページデザインのための4つの実践的なヒント

関連記事: Web コンテンツ ページを作成するための 9 つの実用的なヒント<br />...

Vueコンポーネントの作成方法と使用方法を説明する記事

目次1. コンポーネントとは何ですか? 2. グローバルコンポーネントを作成する方法1 1. Vue...

デザイン理論: デザインにおける階層

<br />原文: http://andymao.com/andy/post/80.ht...

CSS でフッターの「下部吸収」効果を実現

よく遭遇する問題: 下部の要素を「下部に貼り付ける」効果を CSS でどのように実現するか。この記事...

Nginx の負荷分散方法の概要

負荷分散を理解するには、まずフォワード プロキシとリバース プロキシを理解する必要があります。注記:...

要素動的ルーティングブレッドクラムの実装例

マスターするには: localStorage、コンポーネントのカプセル化えーと、GIF に変換したビ...

データベース接続プール Druid の使用手順

総合的なパフォーマンス、信頼性、安定性、スケーラビリティ、使いやすさなどの要素に基づいて、最適なデー...

JS配列の次元削減のいくつかの方法の詳細な説明

2次元配列の次元削減配列インスタンスメソッド concat と ES6 スプレッド演算子を使用した次...

MySQL InnoDBストレージエンジンについて簡単に説明します

序文:ストレージ エンジンはデータベースの中核です。MySQL の場合、ストレージ エンジンはプラグ...

ChromeとIEに対応したWMPに埋め込まれたHTMLの詳細な紹介

実際には、対応する記述方法は多数ありますが、最も一般的なのは object + embedded で...

ab ツールを使用してサーバー上で API ストレス テストを実行します。

目次1 システムスループットの簡単な紹介2 試験方法2.1 クライアントテストツール2.1.1 GE...

Docker で Jenkins サービスを構築する例

画像をプルする root@EricZhou-MateBookProX: docker pull je...