この記事では、参考までに、シンプルなチャットルームを実装するための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 クロスホストネットワークの実装 (手動)
最近、アルゴリズムについて学んでいて、アルゴリズムで動く小さなゲームに出会いました。そのコードは次の...
目次序文1. 親コンポーネントが子コンポーネントに値を渡す2. サブコンポーネントのprops型制約...
コードをコピーコードは次のとおりです。 <hr style="width:490px...
まず、MySQL のバージョンについて説明します。 mysql> バージョンを選択します();...
成果を達成するステップ1. 初期index.html最初の写真、一番上の写真を作成します。写真の i...
プロジェクトには、オンラインで編集する必要があるテーブルがあります。最初は、要素の el-table...
目次1. 反応する基本的な使い方注目すべき機能クラスコンポーネント仮想DOMライフサイクルメソッドJ...
質問最近、SSH フレームワークを使用して実用的なプロジェクトを完了していたときに、長い間悩まされて...
CSS スタイル仕様1. クラスセレクター2. タグセレクター3. IDセレクター4. CSSスタイ...
1. /etc ディレクトリ内の、文字以外の文字で始まり、その後に文字と任意の長さのその他の文字が続...
ページの自動スクロール効果は JavaScript で実現できますが、今日偶然、JS 制御なしでさま...
第二に、キーワードのランキングは、Webページの表示速度にも関係しています(参照:キーワードランキン...
目次序文1. まず、既存のバージョンの MySQL を完全にアンインストールします。 2. deb ...
データの挿入テーブル名(列名1、列名2、列名3)の値(値1、値2、値3)に挿入します。ユーザーに(u...
目次トランザクション分離レベル同時トランザクション実行中に発生した問題SQL標準の4つの分離レベルM...