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

推薦する

JavaScript DOMContentLoaded イベントのケーススタディ

DOMContentLoaded イベント文字通り、DOM がロードされた後に実行されます。 win...

MySQL インデックスの長所と短所、およびインデックス作成のガイドライン

1. インデックスを作成する理由(メリット)インデックスを作成するとシステムのパフォーマンスが大幅に...

花火効果を実現するJavaScript(オブジェクト指向)

この記事では、花火効果を実現するためのJavaScriptの具体的なコードを参考までに紹介します。具...

ウェブページでよく使用される共有コードの完全なリスト(フロントエンドに必須)

コードをコピーコードは次のとおりです。 1. 新浪微博<a href="http:/...

よく使われるnginxの書き換えルールの詳細な説明

この記事では、Web ページのリンクを美しくするためによく使用される書き換えルールをいくつか紹介しま...

Reactイベントメカニズムソースコード分析

目次原理ソースコード分析委任されたイベントバインディングすべてのサポートされているイベントを聴くネイ...

HTML フォーム タグの使用方法を学ぶチュートリアル

HTML のフォームを使用して、ユーザーからさまざまな種類の入力情報を収集できます。フォームは、実際...

MySQL スライディング集計/年初来集計の原理と使用例の分析

この記事では、例を使用して、MySQL スライディング集計/年初来集計の原理と使用方法を説明します。...

MySQL SQL 最適化チュートリアル: IN クエリと RANGE クエリ

まず、in() クエリについて説明します。 「High Performance MySQL」では、イ...

MySQLインスタンスが起動できない問題の分析と解決

目次序文シナリオ分析要約する序文数日前、友人がWeChatで私に連絡してきて、マシンがダウンタイムか...

CSS の優先順位に関する詳細な紹介

CSS の優先順位について話す前に、CSS とは何か、CSS が何に使用されるのかを理解する必要があ...

超詳細なMySQL使用仕様の共有

最近、データベース関連の操作が多くなり、会社の既存の仕様はあまり包括的ではありません。インターネット...

docker-compose が遅すぎる場合の解決策の詳細な説明

解決策はただ一つ、ソースを変更することです。 github からのソースは基本的にタイムアウトするの...

mysql8でルートユーザーのパスワードをリセットする手順を完了します

序文最近、多くの新しい同僚がこの質問をしてきました。特に、homebrew を通じて自動的にインスト...

CSS を使用してテクスチャ付きグラデーション背景画像を記述するためのサンプル コード

プロジェクト内のページの長さはおよそ2000px以上あり、背景画像にはテクスチャやグラデーションがあ...