この記事では、参考までに、シンプルなチャットルームを実装するための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. ポップア...
vuex 永続状態基本原則: すべての vuex データをローカルストレージに保存し、ページが更新さ...
序文この記事では、MySQL 8.0 の新機能を使用して再帰クエリを実装します。詳細なサンプル コー...
関連記事: Web コンテンツ ページを作成するための 9 つの実用的なヒント<br />...
目次1. コンポーネントとは何ですか? 2. グローバルコンポーネントを作成する方法1 1. Vue...
<br />原文: http://andymao.com/andy/post/80.ht...
よく遭遇する問題: 下部の要素を「下部に貼り付ける」効果を CSS でどのように実現するか。この記事...
負荷分散を理解するには、まずフォワード プロキシとリバース プロキシを理解する必要があります。注記:...
マスターするには: localStorage、コンポーネントのカプセル化えーと、GIF に変換したビ...
総合的なパフォーマンス、信頼性、安定性、スケーラビリティ、使いやすさなどの要素に基づいて、最適なデー...
2次元配列の次元削減配列インスタンスメソッド concat と ES6 スプレッド演算子を使用した次...
序文:ストレージ エンジンはデータベースの中核です。MySQL の場合、ストレージ エンジンはプラグ...
実際には、対応する記述方法は多数ありますが、最も一般的なのは object + embedded で...
目次1 システムスループットの簡単な紹介2 試験方法2.1 クライアントテストツール2.1.1 GE...
画像をプルする root@EricZhou-MateBookProX: docker pull je...