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

推薦する

Ubuntu での mysql のインストールと使用 (一般版)

Ubuntu のバージョンに関係なく、MySQL データベースのインストールは基本的に同じです。具...

MySQL ジョイントインデックス(複合インデックス)の実装

共同インデックスこの記事におけるジョイントインデックスの定義は次のとおりです (MySQL): AL...

canvas.toDataURL image/png エラー処理方法の推奨

問題の背景:再生中のビデオのスクリーンショットを撮る必要があります。ビデオはビデオタグを使用して再生...

Vue の双方向イベントバインディング v-model の原理についての簡単な説明

目次説明する:要約する補充するDOM を直接変更して操作する js や jQuery とは異なり、V...

MySQL インデックスの知識の要約

MySQL インデックスの確立は、MySQL の効率的な操作にとって非常に重要です。インデックスによ...

VSCode の Remote-SSH を使用して Linux に接続し、リモート開発を行う

Remote-SSHをインストールして設定するまず VSCode を開き、拡張機能を見つけて、Rem...

あなたのウェブサイトはIE8に適していますか?

オリンピック期間中にIE8ベータ2がリリースされ、英語版のリリースに合わせて中国語版も第一波でリリー...

MySQL の日付と時刻の加算と減算のサンプル コード

目次1.MySQLは時間間隔を加算または減算します2. 日付を減算する最近、MySQL を見直してい...

vue-amap のインストールと使用手順

以前、Amap API を非同期にロードする方法を紹介しました。今回は、vue-amap の使用方法...

Vue の computed と watch の違いを理解する方法

目次概要計算された監視プロパティを監視する要約する概要Vue プロジェクトでは、computed と...

Linux でファイル権限を変更する chmod コマンドの詳細な分析

Linux chmodコマンドを使用して、ターゲット ファイルにアクセス、読み取り、書き込み、または...

入力が完了したことを検出し、次のコンテンツを自動的に入力する HTML を実装する方法

前回の記事では、入力完了の簡単な検出を実現しましたが、今回はさらに一歩進んで、入力が完了した後に次の...

Vueはキャンバスを使用して画像圧縮アップロードを実現します

この記事では、キャンバスを使用して画像圧縮アップロードを実現するVueの具体的なコードを参考までに共...

VMware12 に CentOS8 をインストールする方法 (VM 仮想マシンに CentOS8 をインストールするチュートリアル)

数日前に CentOS8 がリリースされました。8 の最初のバージョンですが、今日は VM12 に ...

セマンティック HTML 構造の利点は何ですか?

1つ: 1.セマンティック タグは単なる HTML であり、CSS にはセマンティクスはありません...