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 のロック機構の詳細な説明

推薦する

シンプルなアコーディオン効果を実現するjs

この記事では、アコーディオン効果を実現するためのjsの具体的なコードを参考までに共有します。具体的な...

言及すべき8つのMySQLの落とし穴を共有する

MySQL はインストールが簡単で、高速で、豊富な機能を備えています。これはオープンソース運動のベン...

MySQL でシンプルな検索エンジンを実装するためのサンプルコード

目次序文導入ngram全文パーサー全文インデックスを作成する検索方法1. 自然言語検索(自然言語モー...

ホバープロンプトにはvue2+elementuiを使用する

Vue2+elementui のホバー プロンプトは、外部と内部に分かれています。内部のものは el...

Linux が Sudo 権限昇格の脆弱性を公開、どのユーザーでも root コマンドを実行可能

Linux で最も一般的に使用される重要なユーティリティの 1 つである Sudo は、ほぼすべての...

Docker で MySQL をインストールし、リモート接続を実装するチュートリアル

画像をプルする docker プル mysql完成した画像を見る Docker イメージイメージを介...

Ace をベースにした Markdown エディターを共有する

エディターは 2 つのカテゴリに分かれていると思います。1 つは、即時レンダリングを実現するために左...

MySQL の複数テーブル関連付け 1 対多クエリを使用して最新のデータを取得する方法の例

この記事では、MySQL で複数のテーブルを使用して 1 対多のクエリを使用して最新のデータを取得す...

MySQL マルチバージョン同時実行制御 MVCC の詳細な研究

MVCC MVCC (Multi-Version Concurrency Control) は、マル...

JDBC-idea で mysql をインポートして java jar パッケージに接続する (mac)

序文1. この記事ではMySQL 8.0バージョンを使用していますバージョン5.0と比較すると、パッ...

Vue要素はテーブルの追加、削除、データの変更を実装します

この記事では、テーブル内のデータを追加、削除、変更するためのvue要素の具体的なコードを参考までに共...

Vue3 の参照と参照の詳細

エディターは、Vue3のデータの関連する問題も共有します。次のような例を見てみましょう。 Vue.c...

MySQLで自動作成時間と変更時間を設定する方法の例

この記事では、MySQL の自動作成時刻と変更時刻を設定する方法について説明します。ご参考までに、詳...

Docker ファイルの保存パス、ポート マッピング操作モードの変更

コンテナの起動コマンドを取得する方法コンテナはすでに作成されていますが、その起動パラメータ(データが...

Win10 は Tsinghua ソースを使用して pytorch-GPU バージョンをすばやくインストールします (推奨)

Cudaがインストールされているかどうかを確認してくださいアナコンダプロンプトに入力nvcc -V...