Vue は Websocket カスタマー サービス チャット機能を実装します

Vue は Websocket カスタマー サービス チャット機能を実装します

この記事では主に基本的なチャットの実装方法を紹介します。今後は絵文字や写真のアップロードなどの機能も追加していく予定です。

実は、初めて触ったときに一番疑問に思ったのは、チャット機能の初期段階でフレームワークを構築したり、何かをダウンロードしたりする必要があるのではないかということ。結果的には、WebSocketがそのまま使えて、フロントエンドとバックエンドのマッチングも取れ、しかも無料。有料の機能も今のところ見当たりません。

実装効果図:

まず、websocket.js ファイルをカプセル化します (直接コピーして、データの受信/送信形式を独自のものに変更することもできます)

'@/store' からストアをインポートします
var webSocket = null;
var globalCallback = null; //外部データ受信用のコールバック関数を定義する //WebSocketを初期化する
エクスポート関数 initWebSocket (url) {
  // ブラウザがWebSocketをサポートしているかどうかを判定する
  if (ウィンドウ内に「WebSocket」がある場合) {
    webSocket = new WebSocket(url); //ソケットオブジェクトを作成する } else {
    alert("このブラウザはWebSocketをサポートしていません!");
  }
  // 開く webSocket.onopen = function () {
    webSocket を開きます。
  };
  //メールを受信するwebSocket.onmessage = function (msg) {
    webSocketOnMessage(メッセージ);
  };
  //閉じる webSocket.onclose = function () {
    webSocket を閉じる();
  };
  //接続エラー発生時のコールバックメソッド webSocket.onerror = function () {
    console.log("WebSocket接続エラー");
  };
}

//接続ソケットが確立されたときにトリガーする export function webSocketOpen () {
  console.log("WebSocket接続が成功しました");
}

//クライアントがサーバーからデータを受信したときにトリガーされます。eは受信したデータオブジェクトです。エクスポート関数webSocketOnMessage(e) {
  // ストアに保存し、チャットインターフェースの変更を監視して、受信した情報を自動的に取得します store.commit('user/SET_WS_MSG', e)
}

//データエクスポート関数webSocketSend(data)を送信{
  console.log('データを送信');
  //ここで必要に応じてデータ形式を変換します webSocket.send(JSON.stringify(data));
}

//ソケットを閉じる
エクスポート関数webSocketClose() {
  webSocket.close()
  console.log("会話接続が閉じられました");
  // }
}


//データの送受信にソケットが必要な他の場所で呼び出される関数 export function sendSock (agentData, callback) {
  globalCallback = callback; //このコールバックは、他の場所で呼び出されたときに定義されるソケットデータを受信するための関数であり、非常に重要です。
  //以下の判断は主にソケット接続の中断やその他の要因の可能性に基づいており、メッセージを再送信できます。
  スイッチ (webSocket.readyState) {
    //CONNECTING: 値は 0 で、接続中であることを示します。
    webSocket.CONNECTINGの場合:
      setTimeout(関数() {
        console.log('接続中...');
        webSocketSend(エージェントデータ、コールバック);
      }, 1000);
      壊す;
    //OPEN: 値は 1 で、接続が成功し、通信が可能であることを示します。
    webSocket.OPENの場合:
      console.log('接続に成功しました');
      webSocketSend(エージェントデータ);
      壊す;
    //CLOSING: 値は 2 で、接続が閉じていることを示します。
    webSocket.CLOSINGの場合:
      setTimeout(関数() {
        console.log('接続を閉じています');
        webSocketSend(エージェントデータ、コールバック);
      }, 1000);
      壊す;
    //CLOSED: 値は 3 で、接続が閉じられたか、接続の開始に失敗したことを示します。
    webSocket.CLOSEDの場合:
      console.log('接続が閉じられました/開けませんでした');
      // 何かをする
      壊す;
    デフォルト:
      // これは決して起こりません
      壊す;
  }
}

//ソケット初期化関数、データ送信(受信)関数、接続終了関数をエクスポートします。export default {
  WebSocketの初期化、
  webSocketClose、
  送信Sock
};

vuexのストレージで受信したデータを定義する

ストア/モジュール/user.js

状態 = {
 webSocketメッセージ: ''
};

//状態を変更する
const 変異 = {
    //Websocketによってプッシュされたメッセージを保存する SET_WS_MSG: (state, msg) => {
        state.webSocketMsg = メッセージ
    }
}
// ミューテーションを送信します。 acceptブロックに問題がある場合は、これを追加して//const actions = {を確認してください。
 // webSockets ({ コミット }) {
 // コミット('SET_WS_MSG', 2)
 // }
//

ストア/getters.js

//状態を取得する const getters = {
    webSocketMsg: 状態 => state.user.webSocketMsg
}

デフォルトのゲッターをエクスポートする

次に、チャットインターフェースでwebsocket.vueの使用を開始します。

<スクリプト>
'@/utils/websocket.js' から { initWebSocket、sendSock、webSocketClose } をインポートします。
エクスポートデフォルト{
  データ() {
    戻る {
     // このアドレスはバックエンドによって提供され、Websocket に接続するために使用されます。 暗号化されたwss 暗号化されていないws
      wsUrl:'ws://アドレス',
    }
  },
  // ストアから受信した情報を取得します。計算: {
    getSocketMsg() {
      this.$store.state.user.webSocketMsg を返します
    },
  },
  //getSocketMsgを監視して、データを受信したかどうかを確認します。watch: {
    ソケットメッセージの取得: {
      ハンドラ: 関数 (val) {
        this.getConfigResult(val)
      },
    },
    // このステップはチャット ボックスの CSS デザインです。これを記述する必要はありません。必要なときに参照できます。
    // 受信メッセージと送信メッセージを obList に保存し、値の変化を監視してチャットの位置を一番下に保ちます (CSS では overflow: auto;)
    オブリスト: {
      ハンドラ: 関数 (val) {
        this.$nextTick(() => {
          this.$refs.chatContent.scrollTop = this.$refs.chatContent.scrollHeight
        })
      },
    },
    即時: true、
  },
  メソッド: {
    // ボタンをクリックしてチャット接続を確立します customerDialog() {
      WebSocket を初期化します(this.wsUrl)
    },
    // データを返すソケットコールバック関数を受信するためのメソッド。この関数は、受信したデータを監視するときに呼び出されます(上記のウォッチ内)
    getConfigResult(val) { },

 // 送信ボタンをクリックしてメッセージを送信します---送信するメッセージの形式はバックエンドで確認する必要があります sending() {
      sendSock('メッセージを送信しました')
    },
    // チャットボックスの終了イベントを処理する handleClose() {
     //接続を閉じる webSocketClose()
    },
  },
}
</スクリプト>

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

以下もご興味があるかもしれません:
  • Vue+Websocketはチャット機能を実装するだけです
  • VueはWebSocketを使用してチャット機能をシミュレートします
  • Websocket+Vuexはリアルタイムチャットソフトウェアを実装します
  • Vue + WebSocket + WaveSurferJS を使用した H5 チャットダイアログインタラクションの例の実装
  • node+vue をベースにしたシンプルな WebSocket チャット機能を実装する
  • Vue と Websocket をベースにした複数人用オンライン チャット ルーム
  • Vue+ウェブ端末がWeChatウェブ版チャットルーム機能を模倣
  • Vue.js は WeChat チャットウィンドウを模倣してコンポーネント機能を表示します
  • Vue + socket.io はシンプルなチャットルームのサンプルコードを実装します

<<:  Tomcat を再デプロイした後にイメージやその他のリソースが自動的に削除される問題を解決します

>>:  myBatis で条件を削除する際のスプライシング問題を解決する

推薦する

プロキシはVue3データの双方向バインディングの原理を実現します

目次1. proxy と Object.defineProperty の利点2. プロキシ監視オブジ...

MySQL Community Server 5.7.16 のグリーン バージョンをインストールしてリモート ログインを実装する方法

1. MySQL Community Server 5.7.16をダウンロードしてインストールします...

Docker デプロイメント RabbitMQ コンテナ実装プロセス分析

1. イメージをプルするまず、次のコマンドを実行して、イメージをローカル コンピューターにダウンロー...

Vueはツリー構造の追加、削除、変更、チェックのサンプルコードを実装します

実は多くの会社がユーザー権限ツリーに似た機能を持っています。最近、追加、削除、修正のツリー構造を書き...

React における setState の同期または非同期の問題の理解

目次1. setState は同期的ですか?非同期ですか? 2. 非同期的に動作する1. React...

ウェブフォーム送信方法の詳細な概要

まず、フォームを送信するいくつかの方法を見てみましょう。 1. <!--一般的な送信ボタン--...

CSS3はテキストのレリーフ効果、彫刻効果、炎のテキストを実現します

この効果を実現するには、まず CSS のプロパティを知っておく必要があります。 text-shado...

docker CMD/ENTRYPOINT が sh スクリプトを実行する問題の解決策: not found/run.sh:

Dockerfile の設定に問題はありませんが、ENTRYPOINT コマンドを実行するとエラー...

動的テーブルを実装するための要素サンプルコード

目次【コード背景】 【コード実装】 #1# -> コード再利用の基本は、再利用可能なコンポーネ...

Java+Tomcat 環境の展開とインストールのプロセス図

次に、Centos7 に Java+Tomcat をインストールします。インターネット上には多くの記...

VueはPCで写真をアップロードする機能を実現

この記事の例では、PC上で写真アップロード機能を実現するためのVueの具体的なコードを参考までに共有...

Reactにおけるコンポーネント通信の詳細な説明

目次親コンポーネントは子コンポーネントと通信します子コンポーネントは親コンポーネントと通信しますコン...

uni-app を使用して上部のナビゲーション バーにボタンと検索ボックスを表示する方法

最近、会社でアプリを開発する準備をしており、最終的に開発には uni-app フレームワークを使用す...

WeChatアプレット認証ログインを処理するエレガントな方法

序文WeChat ミニプログラム プロジェクトでユーザー情報を取得し、ユーザー ログインを実装する場...

Vue でスクロールバーのスタイルを変更する方法

目次まず、スクロール バーのスタイルを変更するには、疑似要素-webkit-scrollbarを使用...