Websocket に基づくシンプルなチャットルームダイアログの実装

Websocket に基づくシンプルなチャットルームダイアログの実装

この記事では、WebSocketを使用して簡単なチャットルームの会話を実装するための具体的なコードを参考までに共有します。具体的な内容は次のとおりです。

まず、ノード環境を構築し、app.jsに次のコードを記述します。

npm で socket.io-client をインストールします

Socket は、高性能なサーバー フレームワークです。開発者は、1 つまたは 2 つのインターフェイスを実装することで、RPC サービス、チャット ルーム サーバー、モバイル ゲーム サーバーなどの独自のネットワーク アプリケーションを開発できます。

npm インストール http-server

一般的に、サーバーサービスが提供されます。パラメータでポート、アドレスなどを指定できます。たとえば、ポート 8888 でサービスを開始するには、コマンドは次のようになります: http-server src -p 8888

npm インストール koa

Koa は、node.js を通じて非常に表現力豊かな HTTP ミドルウェア フレームワークを実装し、Web アプリケーションの開発と API の使用をより快適にすることを目指しています。 Koa のミドルウェアは、エンコードされた順序でスタック内で実行されるため、操作を実行してリクエストを下方向 (ダウンストリーム) に渡し、その後、逆の順序 (アップストリーム) でフィルタリングして応答を返すことができます。

実装コード

// 依存関係を導入する const koa = require("koa")
// koa を初期化する
const app = 新しい koa()
// http を有効にする 
var server = require("http").createServer(app.callback())
// ソケットを初期化する
const io = require("socket.io")(server, { cors: true })
// リッスン io.on('connection', (socket) => {
  // クライアントにメッセージを積極的に送信する setTimeout(() => {
    // io オブジェクト メソッドの emitting を通じてカスタム イベントをトリガーし、クライアントにメッセージを送信します io.emit('chat message', 'What do you want to say?')
  }, 1000)

  socket.on('切断', () => {
    console.log('ユーザーが切断されました')
  })

  // サーバーでクライアントのメッセージを受信します // on メソッドを通じてイベントをリッスンします。クライアントがメッセージを送信すると、イベントがトリガーされ、クライアントが送信したメッセージを受信できます socket.on('chat message', (msg) => {
    コンソール.log(メッセージ)
    // msgはクライアントから送信されたメッセージです // クライアントにメッセージを送信することはemitです
    タイムアウトを設定する(() => {
      msg = msg.replace("あなた", "私").replace("?", "").replace("?", "!")
      // 処理されたメッセージをクライアントに送信するイベントをトリガーします io.emit('chat message', msg)
    }, 500)
  })
})
server.listen(5522,()=>{
  console.log('ソケットサービスは有効です。ポート番号は5522です')
});

このサービスに電話する

'socket.io-client' から { io } をインポートします
作成された(){
    // 1. カスタマイズ可能な接続を作成する this.socket = io('ws://localhost:5522')
     // 2. 接続を確立する this.socket.on('connect', () => {
        console.log('接続が正常に確立されました')
    })
    // 3. メッセージをリッスンして this.socket.on('chat message', msg => { を返します。
        console.log('サービスから返されたメッセージ', msg)
    })
}

これにより、簡単な AI 会話が可能になります。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Pythonソケットプログラミングのポイントを詳しく解説
  • Websocket+Vuexはリアルタイムチャットソフトウェアを実装します
  • 複数人チャットシステムを実装するためのJavaソケット
  • Node.js+express+socket でオンラインのリアルタイム多人数チャットルームを実現
  • Springboot Websocket Stomp メッセージサブスクリプションプッシュ
  • チャットルームを実現するJavaソケットシミュレーション
  • C++ はソケット マルチスレッドに基づくネットワーク チャット ルームを実装します
  • C言語ソケットペアの使用例の説明

<<:  Nginx フォワード プロキシとリバース プロキシ、および負荷分散機能の構成コード例

>>:  MySQL InnoDB のロック機構の詳細な説明

推薦する

CSS 要素の非表示の原則と display:none および visibility:hidden

1. CSS 要素の非表示<br />CSS では、要素を非表示にする (つまり、画面の...

MySQL データベースのマスター スレーブ分離のサンプル コード

導入MySQL データベースの読み取りと書き込みの分離を設定すると、データベースに対する書き込み操作...

Linux コマンドラインターミナルで画面を分割するための 2 つのツール

ターミナル分割画面ツールは2つあります: screen と tmux 1. 画面分割を使用する(上下...

nginx で SSL 証明書を設定して https サービスを実装する方法

前回の記事では、openssl を使用して無料の証明書を生成した後、この証明書を使用してローカル ノ...

Vueでシングルサインオンを実装する方法のまとめ

最近プロジェクトが中断され、RageFrame の研究は一時的に終了しました。この記事では、シングル...

Linux インストール Redis 実装プロセスとエラー解決

今日、redis をインストールしたところ、今までになかったいくつかのエラーが発生しました。ここで記...

CSS3のtext-fill-colorプロパティの詳細な説明

text-fill-color とは何を意味しますか?文字通りの意味から言えば、「テキストの塗りつぶ...

pt-heartbeat を使用して MySQL レプリケーションの遅延を監視する方法の詳細な説明

pt-ハートビートデータベースがマスターとスレーブ間で複製される場合、複製ステータスとデータ遅延は非...

docker で zabbix_agent をデプロイする方法

zabbix_agent のデプロイメント:推奨事項: zabbix_agent は docker-...

EF (Entity Framework) の挿入または更新データ エラーの解決方法

エラー メッセージ:ストアの更新、挿入、または削除ステートメントが予期しない行数 (0) に影響を与...

Ubuntuのpython3でvenvを使用して仮想環境を作成する

1. 仮想環境はプロジェクトに従い、単一のプロジェクト用の仮想環境を作成します(Python 3.4...

CSS の境界線を通して三角形と矢印を実装するサンプルコード

1. CSS ボックスモデルボックスには、余白、境界線、パディング、コンテンツが含まれます境界線の接...

外部キー制約を持つテーブルデータを削除する MySQL メソッドの紹介

MySQLでテーブルやデータを削除する場合、 [エラー] 1451 - 親行を削除または更新できませ...

ネイティブ js で呼び出し、適用、バインドを実装する方法

1. 呼び出しを実装するステップ:関数をオブジェクトのプロパティとして設定します。これを関数に割り当...

ウェブページのエンコードにおける GB2312、GBK、UTF-8 の違い

まず、GB2312、GBK、UTF-8 はすべて文字エンコーディングであることを理解する必要がありま...