この記事では、チャット機能を実現するための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をインストールするための詳細な手順
目次1. JavaScript がシングルスレッドなのはなぜですか? 2. タスクキュー3. イベン...
Linux に Scala 環境をインストールするのは非常に簡単です。Ubuntu 環境であれば、さ...
今日は、興味深いトピックについてお話ししましょう。データベースとテーブルを分割することを検討する前に...
1|0MySQL(MariaDB) 1|11. 説明MariaDB データベース管理システムは My...
この記事の例では、矢印をクリックして画像を切り替えるVue + jsの具体的なコードを共有しています...
MySQLマルチインスタンスとは簡単に言うと、MySQL マルチインスタンスとは、サーバー上で複数の...
目次序文:結果: 1.重合効果: 2. 散布効果:具体的な実装手順: 1. プロジェクトにOpenL...
div の背景を透明にする一般的な方法は 2 つあります。 1. 不透明度属性を 0 ~ 1 の値に...
データベースを操作する過程では、いくつかの指標を日付別にまとめたり、一定期間内の合計金額をカウントし...
目次シングルスレッド非同期シングルスレッドしかし、開発中にネットワーク リクエストやスケジュールされ...
プロジェクトはサーバーと対話し、post を通じてサーバー側の jsp にアクセスし、jsp はサー...
フォーム検証は、フロントエンド開発プロセスで最もよく使用される機能の 1 つです。私の個人的な仕事経...
ウェブサイトが悪意を持ってリクエストされた場合、IP アドレスをブラックリストに登録することは重要な...
この記事では、例を使用して MySQL カスタム関数の使用方法を説明します。ご参考までに、詳細は以下...
この記事では、主に、IDEA を MYSQL データベースに接続するための構成時に失敗する問題の解決...