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

推薦する

mysql バックアップ スクリプトを作成し、7 日間保存します。

スクリプトの要件: MySQL データベースを毎日バックアップし、スクリプトを 7 日間保存します。...

Mac OS 10.11 での MySQL 5.7.12 のインストールと設定のチュートリアル

Mac OS 10.11 に MySQL をインストールして設定する方法を、主に写真を使って手順を簡...

Nginx リバース プロキシと負荷分散を実装する方法 (Linux ベース)

ここで nginx のリバース プロキシを試してみましょう。リバースプロキシ方式とは、インターネット...

Windows での MySQL 8.0.12 のインストール手順と基本的な使用方法のチュートリアル

この記事では、WindowsでのMySQL 8.0.12のインストール手順と使用方法のチュートリアル...

Vue3 ページ、メニュー、ルートの使用

目次1. メニューをクリックしてジャンプ1. ページ名の統一2. 管理ページを追加3. ルートを追加...

MySQLのスペースをクリーンアップするいくつかの具体的な方法

目次序文1. ファイルのディスク使用量を確認する1.1 ディスク容量の使用状況を確認する1.2 ディ...

MySQL ファジークエリの使用法 (通常、ワイルドカード、組み込み関数)

目次1. MySQL ワイルドカード ファジー クエリ (%,_) 1-1. ワイルドカードの分類1...

MySQL のクエリパフォーマンスに対する制限の影響

I. はじめにまず、MySQL のバージョンについて説明します。 mysql> バージョンを選...

チェックボックスの不確定プロパティの使用の紹介

Windows XP でフォルダーのプロパティ ダイアログ ボックスを使用すると、フォルダーの属性カ...

Linux lessコマンド例の詳細な説明

ファイル名が少ないファイルを表示ファイル名を少なく | grep -n コンテンツを検索内容に応じて...

select count() と select count(1) の違いと実行方法

Count(*) または Count(1) または Count([column]) は、おそらく S...

Vueの最初のプログラムを書くための勉強ノート

目次1. HTMLを書く、最初のVueプログラムビューテンプレートとデータに注意してください決定ルー...

vuex での Getter の使用法の詳細な説明

序文Vuex を使用すると、ストア内に「ゲッター」を定義できます (これはストアの計算されたプロパテ...

mysqlパラメータsql_safe_updatesを使用して更新/削除範囲を制限する方法の詳細な説明

序文皆さんご存知のとおり、MySQL の運用・保守において、更新/削除条件が誤っているためにデータが...

Linux7で仮想ホストを実装する3つの方法

1. 同じIPアドレス、異なるポート番号仮想ホスト 1: ホスト IP アドレスは 172.16.3...