この記事では、参考までに、シンプルなチャットルームを実装するための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 クロスホストネットワークの実装 (手動)
スクリプトの要件: MySQL データベースを毎日バックアップし、スクリプトを 7 日間保存します。...
Mac OS 10.11 に MySQL をインストールして設定する方法を、主に写真を使って手順を簡...
ここで nginx のリバース プロキシを試してみましょう。リバースプロキシ方式とは、インターネット...
この記事では、WindowsでのMySQL 8.0.12のインストール手順と使用方法のチュートリアル...
目次1. メニューをクリックしてジャンプ1. ページ名の統一2. 管理ページを追加3. ルートを追加...
目次序文1. ファイルのディスク使用量を確認する1.1 ディスク容量の使用状況を確認する1.2 ディ...
目次1. MySQL ワイルドカード ファジー クエリ (%,_) 1-1. ワイルドカードの分類1...
I. はじめにまず、MySQL のバージョンについて説明します。 mysql> バージョンを選...
Windows XP でフォルダーのプロパティ ダイアログ ボックスを使用すると、フォルダーの属性カ...
ファイル名が少ないファイルを表示ファイル名を少なく | grep -n コンテンツを検索内容に応じて...
Count(*) または Count(1) または Count([column]) は、おそらく S...
目次1. HTMLを書く、最初のVueプログラムビューテンプレートとデータに注意してください決定ルー...
序文Vuex を使用すると、ストア内に「ゲッター」を定義できます (これはストアの計算されたプロパテ...
序文皆さんご存知のとおり、MySQL の運用・保守において、更新/削除条件が誤っているためにデータが...
1. 同じIPアドレス、異なるポート番号仮想ホスト 1: ホスト IP アドレスは 172.16.3...