この記事では、チャット機能を実現するための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. Yumのインストール yum でサブバージョンをインストール 2. 構成1. 倉庫を作る/ho...
開発プロジェクトでは、MySQL のスロークエリログを通じて効率の問題のある SQL を監視できます...
目次序文文章1. stylelintをインストールする2. 設定ファイル3. stylelintを使...
目次過去1週間の時間を取得する過去1か月の時間を取得する過去3か月分を取得新しい Date() と ...
1. オンラインインストール現在、Linux x86アーキテクチャのオンラインインストールのみを試し...
目次1. 背景2. テーブル作成ステートメントとデータ挿入テーブルを作成するデータの挿入3. ウィン...
JavaScript に依存せず、純粋な CSS を使用してsvgストローク描画アニメーション効果と...
最近のブラウザでは、CSS 内で JavaScript を実行することはできなくなりました。以前は、...
1. 戻るボタンhistory.back() を使用してブラウザの「戻る」ボタンを作成します。 &l...
トラブル発生が突然で、業務も迫っていたため、現場のスクリーンショットを撮る時間がありませんでしたので...
目次ケーススタディアカウント残高を更新する直接更新楽観的ロック方式ロックフリーソリューションキューイ...
現在、Linux を使用するほとんどの人は、クラウド サーバーを使用するか、Windows 上に仮想...
目次2. 詳しい説明2.1. asyncRoutesルーティングを追加する2.2. 新しいpermi...
この記事では、WeChatアプレットの計算機機能を実装するための具体的なコードを参考までに紹介します...
目次ReactRouterV6 の変更1. <Switch> が <Routes&...