この記事では、参考までに、シンプルなチャットルームを実装するための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 を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySql 8.0.16-win64 インストール チュートリアル
>>: Docker クロスホストネットワークの実装 (手動)
WEB アプリケーションのページでは、テーブルがよく使用されます。列の数が限られているため、各列のコ...
1. Docker Secretとは1. シナリオ表示MySQL サービスなど、一部のサービスではパ...
複合インデックス (結合インデックスとも呼ばれます) は、複数の列に対して作成されるインデックスです...
Nginx におけるいわゆる接続制限は、実際には TCP 接続、つまり 3 ウェイ ハンドシェイク後...
ルーティングとは何ですか?ルーティングとは、相互接続されたネットワークを介して送信元ステーションから...
ボリュームとは何ですか?ボリュームは英語で容量を意味し、Docker ではデータ ボリューム、つまり...
最近、CSS 関連の知識ポイントをいくつか見直し、CSS における典型的なマージンの重なりの問題を整...
1. 中国語入力方法を設定する 2. ダブルスペルモードを設定する 3. 注意事項20.04 で S...
問題の説明:デスクトップ コンピューターとキャンパス ネットワークを使用して、有線モードでインターネ...
目次1. 需要2. 解決策3. 最初の改善4.砂糖を加える5. 理解不能6. 問題点7. オブジェク...
インデックスを使用してクエリを高速化する1. はじめにWeb 開発には、ビジネス テンプレート、ビジ...
まず、「LISTENING」状態の TCP ソケットには 2 つの独立したキューがあることを理解する...
関数を記述できます。主に正規表現を使用して判断を行います。入力文字が空の場合は、「-」を使用して置き...
SSDストレージを有効にしたMySQLインスタンスの詳細な説明特に OS と MySQL が同じディ...
目次vue2の場合vue3ではセットアップに関する注意事項セットアップライフサイクルは、before...