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 で条件を削除する際のスプライシング問題を解決する

推薦する

Git サーバーを使用してデバッグ ブランチを表示し、修正する方法を 1 日 1 分で学習します。

デバッグブランチプロジェクトの通常の開発中に、以前にリリースされたバージョンにバグがある場合がありま...

Vue/React シングルページ アプリケーションをリフレッシュなしで復元するソリューション

目次導入なぜわざわざ?落とし穴のあるコミュニティソリューション(Vue を例に挙げる)現時点では良い...

macOS SierraにApache2.4+PHP7.0+MySQL5.7.16をインストールする

Mac システムには PHP と Apache が付属していますが、必要なバージョンではない場合があ...

JavaScript進捗管理の詳しい説明

目次序文質問原理テスト序文プログラムを作成するときに、読み込みの進行状況やアップロードの進行状況など...

Windows 10 で MySQL を完全に削除してアンインストールする方法

序文この記事では、Windows 10 システムで MySQL を完全に削除してアンインストールする...

Angularルーティングアニメーションと高度なアニメーション機能の詳細な説明

目次1. ルーティングアニメーション2. グループクエリとスタガー1. ルーティングアニメーションル...

HTML ではスペースはどのように表現されますか (どのような意味ですか)?

Web 開発では、次のような文字によく遭遇します: &nbsp;これは実際には HTML が...

MySQL における一般的な高度な SQL ステートメント

MySQL 高度な SQL ステートメント kgc を使用します。 テーブルlocation(Reg...

ページ内のリストプルダウン効果を実現するための純粋なCSS

次のような効果がよく見られます。 そうです、ページ上でよく使われる「展開と折りたたみ」のインタラクシ...

実行後にdocker nginxにアクセスできない問題の解決策

## 1最近、docker デプロイメントを学習しており、当初は nginx を docker 化す...

Vue グローバルメソッドを設定する 2 つの方法

目次1. はじめに2. 最初の方法3. 2番目の方法要約する1. はじめにVue プロジェクトの開発...

WeChatアプレットはシンプルな計算機を実装する

WeChatアプレットの簡単な計算機は参考用です。具体的な内容は次のとおりです。 1. はじめに1....

MySQL 5.7.21 winx64 グリーンバージョンのインストールと設定方法のグラフィックチュートリアル

この記事ではMySQL 5.7.21のインストールと設定方法を記録しています。具体的な内容は以下のと...

Docker mongoDB 4.2.1 をインストールし、Springboot ログを収集する詳細な手順

1: dockerにmongodbをインストールするステップ1: dockerにmongodbをイン...

Vueはvue-quill-editorリッチテキストエディタを使用し、画像をサーバーにアップロードします。

目次1. 準備2. グローバルコンポーネント quill-editor を定義する1. テンプレート...