この記事では、チャット機能を実現するためのVue+express+Socketの具体的なコードを参考までに共有します。具体的な内容は次のとおりです。 チャット機能の実装特定の機能 インターフェースを美化せずに機能を実現するだけ 1. メッセージを入力し、「送信」をクリックします。すべてのユーザーが以下のメッセージを受信できます。 2. ユーザー ID を入力し、[接続] をクリックして対応するチャットに接続します。別のインターフェイスで、先ほどのページのユーザー ID を入力し、内容を入力して [指定の人に送信] をクリックします。すると、先ほどのページは印刷できますが、他のページは受信されず、プライベート チャットの機能が実現されます。 3.プライベートチャットのコンテンツ表示は特に実装されていませんが、メッセージの送受信は実装できます。プライベートチャットのコンテンツ表示を実装するには、別のプライベートチャットページを追加することができます。 スクリーンショット プロジェクト準備 ソケットの準備のみ紹介されており、Vue や express の構築は紹介されていません。 フロントエンドソケット インストール npm i vue-socket.io --save 輸入 'vue-socket.io' から VueSocketIO をインポートします。 バックグラウンドソケット インストール npm i socket.io --save 輸入 express-generatorによって生成されたbin/wwwフォルダに追加します var io = require('socket.io')(サーバー)' io.on('接続', (ソケット) => { socket.on('地雷除去', (データ) => { コンソールにログ出力します。 }); }); 具体的なスクリーンショットは次のとおりです。 プロジェクトの実現Vueコード HTMLコード <div class="home"> ユーザーID: <input type="text" v-model="userid"> ニックネーム: <input type="text" v-model="name"> メッセージ: <input type="text" v-model="msg" /> <button @click="send">送信</button> <button @click="join">接続</button> <button @click="sendmsg">指定した人に送信</button> <ul> <li v-for="(item,index) チャットリスト内" :key="item.name + index"> {{ item.name }} はこう言っています: {{ item.msg }} </li> </ul> </div> jsコード エクスポートデフォルト{ 名前: "ホーム", データ() { 戻る { ユーザー: [], メッセージ: "", チャットリスト: [], 名前: ''、 ユーザーID: '' }; }, ソケット: { // バックグラウンドソケットに接続する 接続する() { console.log('ソケットが接続されました'); }, // ユーザーのバックグラウンド呼び出し、データの追加 sendMessage(data) { コンソールにログ出力します。 this.chatList.push(データ) }, // ユーザーのバックグラウンド呼び出し、データの印刷receivemsg(data) { console.log('メッセージを受信'); コンソールにログ出力します。 } }, メソッド: { // バックグラウンドにメッセージを送信する send() { // バックグラウンドソケットのメッセージメソッドを呼び出すには、emit を使用します。this.$socket.emit("message", { ユーザーID: 100, 名前: this.name, メッセージ: this.msg }); }, // ユーザー接続を確立する join() { this.$socket.emit("join", { ユーザーID: this.userid }); }, // プライベートメッセージングのためにバックエンドにメッセージを送信する sendmsg() { this.$socket.emit("sendmsg", { ユーザーID: this.userid、 メッセージ: this.msg }); } } }; エクスプレスコード 先ほどwwwファイルに定義された接続に次のコードを追加します。 // プライベートチャット機能を実装するために各ユーザーのソケットを保存するために使用します。let arrAllSocket = {} // ソケット接続を作成する io.on('connection', (socket) => { console.log('接続されました'); // コンソールログ(ソケット); // join関数はユーザーが接続するために使用されます socket.on('join', function (obj) { console.log(obj.userid + '参加') // プライベートメッセージングの各ユーザーの接続ステータスを保存します arrAllSocket[obj.userid] = socket }) // フォアグラウンドから送信されたメッセージを受信する関数名は message です socket.on('メッセージ', (データ) => { コンソールにログ出力します。 //メッセージをフロントデスクに送り返す(フロントデスクで定義されたメソッドを呼び出す)関数名はsendMessage io.emit('sendMessage', データ); }); // プライベートメッセージ socket.on('sendmsg', function (data) { コンソールにログ出力します。 // ユーザー接続を照会する let target = arrAllSocket[data.userid] if (ターゲット) { //指定された人にメッセージを送信する target.emit('receivemsg', data) } }) }) バックグラウンドコードのカプセル化wwwファイルには多くのコードを含めるべきではないため、この部分のコードはカプセル化されています。 1. プロジェクトディレクトリに次の構造のioフォルダを作成します。 2. 前の部分のコードをio/index.jsに移動する コードは次のとおりです // server をパラメータとして渡す module.exports = function (server) { var io = require('socket.io')(サーバー); // プライベートチャット機能を実装するために各ユーザーのソケットを保存するために使用します。let arrAllSocket = {} // ソケット接続を作成する io.on('connection', (socket) => { console.log('接続されました'); // コンソールログ(ソケット); // join関数はユーザーが接続するために使用されます socket.on('join', function (obj) { console.log(obj.userid + '参加') // プライベートメッセージングの各ユーザーの接続ステータスを保存します arrAllSocket[obj.userid] = socket }) // フォアグラウンドから送信されたメッセージを受信する関数名は message です socket.on('メッセージ', (データ) => { コンソールにログ出力します。 //メッセージをフロントデスクに送り返す(フロントデスクで定義されたメソッドを呼び出す)関数名はsendMessage io.emit('sendMessage', データ); }); // プライベートメッセージ socket.on('sendmsg', function (data) { コンソールにログ出力します。 // ユーザー接続を照会する let target = arrAllSocket[data.userid] if (ターゲット) { //指定された人にメッセージを送信する target.emit('receivemsg', data) } }) }) } 最後に、wwwファイルで次のコードを使用してファイルを導入します。 var io = require('../io') io(サーバー) この時点で、チャットの基本的な機能が実現されます。後で使用するために記録します。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: Ubuntu 16.04にJenkinsをインストールするための詳細な手順
序文この実験では、デバッグ用に2つの仮想マシン(CentOs6とRed Hat 6)を準備します。 ...
目次animate() アニメーションメソッドアニメーションキューイングdelay() メソッドアニ...
<body style="scroll:no"> <テーブルの...
数日前にプログラムを書いていたとき、プロンプト情報 (TITLE) を新しい行で囲みたいと思いました...
フロントエンドで画像をアップロードする原理は、入力 type="file" タグ...
目次単一マシンの展開オンラインプルミラーを見るRabbitMQを作成して実行するMQコンテナを正常に...
Linux インストール MySQL ノート1. MySQL データベース サーバーをインストールす...
MySQL テーブルのテーブル構造をすばやく変更する - 「MySQL 管理」から抜粋 ALTER ...
テーブルを画面全体(残りの空白領域)に表示するために、幅属性は 100% と定義されることが多く、セ...
背景Tencent Linux クラウド ホストがあり、その上に Docker (ServiceDo...
Dockerfile は、イメージをビルドするために使用されるテキスト ファイルです。テキスト コン...
目次1. オプションAPIと組み合わせAPIの違い2. セットアップを具体的にどのように使用するので...
MySQL の運用と保守において、R&D の同僚が 2 つの異なるインスタンスのデータを比較...
大学 4 年生のときのインターンシップ中に、表内のデータの番号をクリックすると、そのデータの下に新し...
ドキュメント モードには次の 2 つの機能があります。 1. HTML文書を解析するためにどのHTM...