WebSocketを使用する理由Websocket は、通常、リアルタイム通信に使用されるネットワーク通信プロトコルです。 Websocket プロトコルは http プロトコルに似ています。http プロトコルには、クライアント側からのみ開始でき、サーバー側はリクエスト URL と渡されたパラメータに基づいて対応する結果を返すという欠点があります。 Websocket は Websocket は、Web チャット ルーム、Web カスタマー サービス、インスタント メッセージングなど、フロントエンドとバックエンドが頻繁にデータを交換するシナリオに適用できます。 ソケット.io高性能、高信頼性、スケーラビリティを備えた双方向かつ低遅延の Websocket 通信パッケージです。 Socket.IO は、ブラウザとサーバー間のリアルタイム、双方向、イベントベースの通信を可能にするライブラリです。 含まれるもの:
公式サイト オープンソースプロジェクト以下のコードと時間項目はオープンソースプロジェクト[nodejs-study]で公開されます。ダウンロードして学習してください。 効果プレビューサービスを実行するために フロントエンドページ: 送受信機能を含むチャット UI ボックス http://localhost:3000/test バックグラウンド Websocket: リスニングと応答 アプリまず、expressとsocket.ioライブラリをインストールする必要があります
次に、2 つのパス
定数 express = require('express'); express() は、定数です。 定数 http = require('http'); 定数 server = http.createServer(app); const { Server } = require("socket.io"); const io = 新しい Server(server); app.get('/', (req, res) => { res.send('<h1>Hello world</h1>'); }); app.get('/test', (req, res) => { res.sendFile(__dirname + '/index.html'); }); // io.on('接続', (ソケット) => { // console.log('ユーザーが接続しました'); // }); //zhengkai.blog.csdn.net より //socket.on 情報と socket.emit 応答情報を処理します //ここで、受信したメッセージを大文字にします io.on('connection', (socket) => { //Socket.io (zhengkai.blog.csdn.net より) socket.on('チャットメッセージ', (msg) => { console.log('受信: ' + メッセージ); socket.emit("チャットメッセージ", msg.toUpperCase()); }); }); //ポート3000でリッスン server.listen(3000, () => { console.log('*:3000 でリッスンしています'); }); インデックス.htmlこれはいくつかのスタイル設定が行われ、次の本文コンテンツが含まれます。
スクリプト部分については、まず公式の socket.io js クライアントを使用して接続を初期化し、リスニング イベントを追加します。
<!DOCTYPE html> <html> <ヘッド> <title>Socket.IO チャット</title> <スタイル> 本文 { マージン: 0; パディングボトム: 3rem; フォントファミリ: -apple-system、BlinkMacSystemFont、"Segoe UI"、Roboto、Helvetica、Arial、sans-serif; } #form { background: rgba(0, 0, 0, 0.15); padding: 0.25rem; position: fixed; bottom: 0; left: 0; right: 0; display: flex; height: 3rem; box-sizing: border-box; backdrop-filter: blur(10px); } #input { border: none; padding: 0 1rem; flex-grow: 1; border-radius: 2rem; margin: 0.25rem; } #input:focus { アウトライン: なし; } #form > button { background: #333; border: none; padding: 0 1rem; margin: 0.25rem; border-radius: 3px; outline: none; color: #fff; } #messages { リストスタイルタイプ: なし; マージン: 0; パディング: 0; } #メッセージ > li { パディング: 0.5rem 1rem; } #メッセージ > li:nth-child(odd) { 背景: #efefef; } </スタイル> </head> <本文> <ul id="メッセージ"></ul> <フォームid="フォーム" アクション=""> <input id="input" autocomplete="off" /><button>送信</button> </フォーム> </本文> <script src="/socket.io/socket.io.js"></script> <スクリプト> var ソケット = io(); var メッセージ = document.getElementById('メッセージ'); var フォーム = document.getElementById('フォーム'); var 入力 = document.getElementById('入力'); //画面に出力 function addMessage(str){ li = document.createElement("li") の定数。 li.innerHTML = str; メッセージ.appendChild(li); } // console.log(フォーム) form.addEventListener('submit', 関数(e) { e.preventDefault(); if (入力値) { //Socket.io (zhengkai.blog.csdn.net より) let msg = 'メッセージを送信:' + input.value; コンソール.log(メッセージ) socket.emit('チャットメッセージ', input.value); メッセージを追加します(メッセージ); //入力ボックスをクリアします//input.value = ''; } }); socket.on("チャットメッセージ", (arg) => { let msg = 'メッセージを受信:' + arg; console.log(msg); // ワールド メッセージを追加します(メッセージ); }); </スクリプト> </html> これで、Node.js と Socket.IO を組み合わせて Websocket インスタント メッセージングを実装する方法についての説明は終わりです。Node.js の Websocket インスタント メッセージングに関するその他の関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: CSS で適応型ディバイダーを巧みに実装する N 通りの方法
>>: Web デザインのヒント: ページ レイアウトの簡単なルール
目次1. 日付2. 正規表現3. オリジナルパッケージタイプ序文:参照値(オブジェクト)は、 Dat...
目次コンポーネントの基本概念オブジェクトとコンポーネントの違い成分属性属性とプロパティ属性:財産:ク...
Linuxファイアウォールの状態を確認する方法1. 基本操作 # ファイアウォールのステータスを表示...
1. マスター'x@xxxx:x'への接続エラー- 再試行時間: 60 再試行回数:...
この記事では主に、CSS3 アニメーションで簡単な指クリックアニメーションを実装する例を紹介し、皆さ...
1. div css マウスの手の形は cursor:pointer; です。 2. HTML の相...
目次1. 浅いコピー1. Object.assign(ターゲット、ソース、ソース...) 2. スプ...
この記事では主に、次のように共有されるネイティブ JS 音楽プレーヤーのサンプル コードを紹介します...
目次なぜ Docker が必要なのでしょうか? Docker デプロイメントの例コードの準備Dock...
1. Dockerをインストールするyum -y install docker-ioインストールが完...
CSS で要素の水平方向と垂直方向の中心を設定することは、非常に一般的な要件です。しかし、理論的には...
インターネット上には多くのインポート方法があり、公式も3つのインポート方法を提供していますが、インポ...
https をサポートしていない Web サイトは、ブラウザによって徐々に安全でないとマークされるた...
今日、仕事中に左結合に関するSQLの問題に遭遇しました。後で解決しましたが、この問題を通じてSQLの...
標準 CSS3 を使用して要素の影の効果を実現するには、2 つの手順があります。1 つ目は一般的なb...