キーテイクアウト
- このチュートリアルでは、node.js、mongodb、およびsocket.ioを使用してリアルタイムチャットルームWebアプリを構築するための段階的なガイドを提供します。チャットルームはクラウドに完全に展開されます チュートリアルでは、socket.ioを使用してリアルタイムの双方向イベントベースの通信アプリを作成する方法について説明します。 WebSocketsを大幅に使用するプロセスを簡素化します
- チュートリアルでは、チャットルームに参加して離れるユーザーをログインする方法と、チャットチャネルで受信したメッセージをソケットの他のすべての接続にブロードキャストする方法を示しています。 チュートリアルでは、チャットメッセージをMongoDBデータベースに保存する方法と、チャットルームに参加するすべての新しいユーザーにコンテキストを提供するために受信した最後の10のメッセージを放出する方法を示しています。
- チュートリアルは、WebSocketを介して他のすべての接続されたクライアントに受信したメッセージをブロードキャストできるチャットシステムで終了します。システムはメッセージをデータベースに保存し、新しいユーザーごとに最後の10のメッセージを取得します。
- この記事は、MicrosoftのWeb Dev Techシリーズの一部です。 SitePointを可能にしてくれたパートナーをサポートしてくれてありがとう。
- このnode.jsチュートリアルシリーズは、クラウドに完全に展開されているnode.js駆動のリアルタイムチャットルームWebアプリを構築するのに役立ちます。 このシリーズでは、Windowsマシンでnode.jsをセットアップする方法(またはMacにいる場合は概念を学習する)、Expressを使用したWebフロントエンドの開発方法、node.js expressアプリを展開する方法を学びます。 azure、socket.ioを使用してリアルタイムレイヤーを追加する方法、およびそれをすべて一緒に展開する方法。 チュートリアルでは、オプションのVisual Studioとnode.jsツールを開発環境としてVisual Studioプラグインに使用します。両方のツールの無料ダウンロードへのリンクを提供しました。これは中級レベルの初心者の記事です。HTML5とJavaScriptを知ることが期待されています。
パート1 - node.jsの紹介 パート2 - node.jsとazure
を使用してExpressを歓迎しますパート3 - node.js、mongo、socket.ioでバックエンドを構築する
パート4 - ブートストラップを使用してチャットルームUIを構築しますパート5 - チャットルームをWebSockets
に接続しますパート6 - フィナーレとデバッグリモートノード.jsアプリ
パート3 - node.js、socket.io、およびmongoでチャットルームバックエンドを構築する
ハンズオンnode.jsチュートリアルシリーズのパート3へようこそ:node.js-PoweredチャットルームWebアプリを作成します。 この記事では、既存のExpressベースのnode.jsアプリを使用して、WebSocketサポートを備えたチャットルームバックエンドを作成する方法を紹介します。
WebSocketsとは何ですか? socket.io?
とは何ですかWebSocketは、WebブラウザーとWebサーバーの間にTCP(つまり、双方向通信)を介したフルダップレックスチャネルを作成できるように設計されたプロトコルです。 HTTPと完全に互換性があり、TCPポート番号80を使用しています。WebSocketにより、Webアプリケーションがリアルタイムになり、クライアントとサーバー間の高度なインタラクションをサポートすることができました。 Internet Explorer、Google Chrome、Firefox、Safari、Operaなど、いくつかのブラウザによってサポートされています。
socket.ioは、JavaScriptライブラリとnode.jsモジュールであり、リアルタイムの双方向イベントベースの通信アプリを簡単かつ迅速に作成できます。 WebSocketsを大幅に使用するプロセスを簡素化します。 socket.io v1.0を使用してチャットルームアプリを作成します。socket.ioをpackage.jsonに追加します
package.jsonは、その依存関係を含むプロジェクトに関連するさまざまなメタデータを保持するファイルです。 NPMはこのファイルを使用して、プロジェクトで必要なモジュールをダウンロードできます。 Package.jsonのこのインタラクティブな説明とそれに含まれるものを見てください。
依存関係としてSocket.ioをプロジェクトに追加しましょう。それを行うには2つの方法があります。
チュートリアルシリーズをフォローしており、Visual Studioセットアップでプロジェクトを持っている場合は、プロジェクトのNPM部分を右クリックして、「新しいNPMパッケージをインストールしてください…」
を選択します。
- ウィンドウが開いたら、「socket.io」を検索し、上位の結果を選択し、「package.jsonに追加」チェックボックスをチェックします。 [パッケージをインストール]ボタンをクリックします。これにより、socket.ioをプロジェクトにインストールし、package.jsonファイルに追加します。
package.json
![]()
OS XまたはLinuxを使用している場合、プロジェクトフォルダーのルートで次のコマンドを実行することで、上記と同じアクションを実現できます。
<span>{ </span> <span>"name": "NodeChatroom", </span> <span>"version": "0.0.0", </span> <span>"description": "NodeChatroom", </span> <span>"main": "app.js", </span> <span>"author": { </span> <span>"name": "Rami Sayar", </span> <span>"email": "" </span> <span>}, </span> <span>"dependencies": { </span> <span>"express": "3.4.4", </span> <span>"jade": "*", </span> <span>"socket.io": "^1.0.6", </span> <span>"stylus": "*" </span> <span>} </span><span>}</span>に追加します 次のステップは、socket.ioをapp.jsに追加することです。これを達成することができます。次のコードを置き換えて… <span>npm install --save socket.io</span>…with:これにより、socket.ioモジュールがそれに接続できるように、httpサーバーをserve and passと呼ばれる変数でHTTPサーバーをキャプチャします。最後のコードブロックはサーブ変数を取得し、HTTPサーバーを起動するリッスン関数を実行します。
ユーザーが参加して
をログに記録しますhttp<span>.createServer(app).listen(app.get('port'), function(){ </span> <span>console.log('Express server listening on port ' + app.get('port')); </span><span>});</span>理想的には、チャットルームに参加するユーザーをログに記録したいと考えています。次のコードは、WebSocketを介してHTTPサーバーに介してすべての接続イベントで実行されるコールバック関数をフックすることにより、それを達成します。コールバック関数では、Console.logを呼び出して、ユーザーが接続したことを記録します。 serve.listen。を呼び出すと、このコードを追加できます
<span>{ </span> <span>"name": "NodeChatroom", </span> <span>"version": "0.0.0", </span> <span>"description": "NodeChatroom", </span> <span>"main": "app.js", </span> <span>"author": { </span> <span>"name": "Rami Sayar", </span> <span>"email": "" </span> <span>}, </span> <span>"dependencies": { </span> <span>"express": "3.4.4", </span> <span>"jade": "*", </span> <span>"socket.io": "^1.0.6", </span> <span>"stylus": "*" </span> <span>} </span><span>}</span>ユーザーが切断されたときに同じことをするには、各ソケットの切断イベントを接続する必要があります。前のコードブロックのコンソールログの後、次のコードを内部に追加します。
<span>npm install --save socket.io</span>最後に、コードは次のようになります:チャットチャンネルで受信したメッセージをブロードキャスト
http<span>.createServer(app).listen(app.get('port'), function(){ </span> <span>console.log('Express server listening on port ' + app.get('port')); </span><span>});</span>socket.ioは、イベントを送信するためにEmitと呼ばれる関数を提供します。 チャットチャネルで受信したメッセージは、コールバックのブロードキャストフラグを使用してEmitを呼び出すことにより、このソケットの他のすべての接続にブロードキャストされます。
最後に、コードは次のようになります:
NOSQLデータベースにメッセージを保存する
<span>var serve = http.createServer(app); </span><span>var io = require('socket.io')(serve); </span> serve<span>.listen(app.get('port'), function() { </span> <span>console.log('Express server listening on port ' + app.get('port')); </span><span>});</span>チャットルームは、チャットメッセージを単純なデータストアに保存する必要があります。通常、ノードのデータベースに保存する2つの方法があります。データベース固有のドライバーを使用するか、ORMを使用できます。このチュートリアルでは、メッセージをMongodbに保存する方法を紹介します。もちろん、PostgreSQLやMySQLなどのSQLデータベースなど、好きな他のデータベースを使用できます。
接続するmongodbがあることを確認する必要があります。サードパーティサービスを使用して、MongoHQやMongolabなどのMongoDBをホストできます。このチュートリアルを見て、AzureのMongolabアドオンを使用してMongoDBを作成する方法を確認してください。 「アプリの作成」セクションにアクセスしたら、読み物を止めることができます。後で簡単にアクセスできるMongolab_uriをどこかに保存してください。io<span>.on('connection', function (socket) { </span> <span>console.log('a user connected'); </span><span>});</span>MongoDBを作成し、クリップボードにコピーした接続情報の下にデータベース用のMongolab_uriを作成したら、URIがアプリケーションで利用可能であることを確認する必要があります。このURIなどの機密情報をコードまたはソースコード管理ツールの構成ファイルに追加することは、ベストプラクティスではありません。 Azure Webアプリケーションの構成メニュー(使用したチュートリアルなど)の接続文字列リストに値を追加するか、アプリ設定リスト(名前CustomConnStr_Mongolab_uri)に追加できます。ローカルマシンでは、customconnstr_mongolab_uriという名前とuriの値を使用して環境変数に追加できます。次のステップは、Mongodbのサポートをプロジェクトに追加することです。 Package.jsonの依存関係オブジェクトに次の行を追加することで、それを行うことができます。必ず変更をファイルに保存してください。
ソリューションエクスプローラーのプロジェクトのNPM部分を右クリックして、右クリックのコンテキストメニューを表示します。 [コンテンツ]メニューから[不足しているパッケージをインストール]をクリックして、MongoDBパッケージをインストールして、モジュールとして使用できるようにします。
そのモジュールをインポートして、app.jsでmongodbクライアントオブジェクトを使用できるようにしたいと考えています。 11行目など、最初の要求( '')関数呼び出しの後、次のコード行を追加できます。
<span>{ </span> <span>"name": "NodeChatroom", </span> <span>"version": "0.0.0", </span> <span>"description": "NodeChatroom", </span> <span>"main": "app.js", </span> <span>"author": { </span> <span>"name": "Rami Sayar", </span> <span>"email": "" </span> <span>}, </span> <span>"dependencies": { </span> <span>"express": "3.4.4", </span> <span>"jade": "*", </span> <span>"socket.io": "^1.0.6", </span> <span>"stylus": "*" </span> <span>} </span><span>}</span>CustomConnSTR_MONGOLAB_URI環境変数にあるURIを使用して、データベースに接続する必要があります。接続したら、ソケット接続で受信したチャットメッセージを挿入します。
上記のコードでわかるように、<span>npm install --save socket.io</span>プロセスを使用して環境変数値を取得します。データベースのコレクションに移動し、オブジェクトにコンテンツを含む挿入関数を呼び出します。すべてのメッセージがMongoDBデータベースに保存されています。
最後の10のメッセージを発したもちろん、チャットルームに参加すると、ユーザーが迷子になっていると感じたくないので、受信した最後の10のメッセージをサーバーに送信するようにする必要があります。そのためには、Mongodbを接続する必要があります。この場合、データベース接続を失ってもサーバーを動作させることができるように、データベースへの1つの接続ですべてのソケットコードをラッピングすることを控えています。 また、クエリを最後の10のメッセージに並べ替えて制限したいと考えています。MongoDB生成された_IDをタイムスタンプを含んでいるため(よりスケーラブルな状況では、チャットメッセージに専用のタイムスタンプを作成する必要があります。 )そして、結果を10のメッセージのみに制限するように制限関数を呼び出します。
Mongodbの結果をストリーミングして、到着時にできるだけ早くチャットルームに放出できるようにします。上記のコードは、前の段落で説明されているようにジョブを行います。
azure
への展開過去のチュートリアル(パート2など)に従うことで、azureに再展開できます。
結論
http<span>.createServer(app).listen(app.get('port'), function(){ </span> <span>console.log('Express server listening on port ' + app.get('port')); </span><span>});</span>結論として、WebSocketsを介して他のすべての接続されたクライアントに受信したメッセージをブロードキャストできるチャットシステムがあります。システムはメッセージをデータベースに保存し、最後の10のメッセージを取得して、チャットルームに参加するすべての新しいユーザーにコンテキストを提供します。パート4!
をお楽しみにパート4 - ブートストラップでチャットルームUIを構築するのはこちらです。私のTwitterアカウントに従って、この記事や他の記事について最新の状態を保つことができます。 Azureのノードの詳細
ノードでの詳細な学習については、私のコースはMicrosoft Virtual Academyで入手できます。
または類似のノード被験者に関するいくつかの短い形式のビデオ:6部構成のシリーズ:node.js を使用したアプリを構築します ノード(Coding4Fun)
この記事は、MicrosoftのWeb Dev Techシリーズの一部です。 Project Spartanとその新しいレンダリングエンジンを皆さんと共有できることを楽しみにしています。モダンでMac、iOS、Android、またはWindowsデバイスで無料の仮想マシンを入手するか、リモートでテストしてください
。Node.js搭載チャットルームWebアプリの構築に関するよくある質問(FAQ)
node.js、mongodb、およびsocket.io?
セキュリティを使用して構築されたチャットルームWebアプリのセキュリティがWebアプリケーションの重要な側面であることを確認するにはどうすればよいですか。 node.js、mongodb、およびsocket.ioで構築されたチャットルームWebアプリの場合、いくつかのセキュリティ対策を実装できます。まず、HTTPの代わりにHTTPSを使用して、サーバーとクライアント間のすべての通信が暗号化されるようにします。第二に、すべての着信データを検証して、SQL注入攻撃を防ぎます。第三に、ユーザー認証にはJWT(JSON Web Tokens)を使用します。最後に、潜在的なセキュリティの脆弱性を回避するために、すべての依存関係を最新のバージョンに定期的に更新します。
チャットルームWebアプリの他のデータベースをnode.jsと統合できますか?柔軟性が高く、さまざまなデータベースと統合できます。 MongoDBはスケーラビリティと柔軟性のために一般的な選択肢ですが、特定のニーズに応じてMySQL、PostgreSQL、SQLiteなどの他のデータベースを使用することもできます。データベースの選択は、アプリケーションのデータ要件とデータベースの具体的な機能に大きく依存します。 node.jsチャットルームWebアプリでは、ロードバランサーを使用して、複数のサーバー全体に着信トラフィックを配布できます。また、node.jsのクラスタリングモジュールを使用して、すべてがサーバーポートを共有する子プロセスを作成することもできます。さらに、MongoDBのようなNOSQLデータベースの使用を検討してください。これは、より多くのデータを処理するために水平方向に簡単にスケーリングできることを検討してください。
チャットルームWebアプリにはsocket.ioの代わりに他のリアルタイムテクノロジーを使用できますか? >はい、socket.ioの代わりに使用できる他のいくつかのリアルタイムテクノロジーがあります。これらには、WebSocket、サーバーセントイベント(SSE)、およびPusherやFirebaseなどのサードパーティサービスが含まれます。これらのテクノロジーにはそれぞれ独自の長所と短所があるため、選択は特定のニーズに依存します。開発プロセスの重要な部分です。 node.jsチャットルームWebアプリの場合、MochaやJestなどのテストフレームワークを使用して、ユニットテストと統合テストを作成できます。 APIテストには、Postmanや不眠症などのツールを使用することもできます。さらに、サイプレスや操り人形師などのエンドツーエンドのテストツールを使用して、ユーザーインタラクションをシミュレートし、アプリが予想どおりに機能するようにしてください。 🎜>
node.jsチャットルームWebアプリを展開できるプラットフォームがいくつかあります。これらには、Heroku、AWS、Google Cloud、Azureが含まれます。各プラットフォームには独自の展開プロセスがありますが、通常、アカウントを作成し、新しいプロジェクトを設定し、プラットフォームの指示に従ってアプリを展開する必要があります。node.jsチャットルームWebアプリにマルチメディアサポートを追加できますか?
はい、node.jsチャットルームWebアプリにマルチメディアサポートを追加できます。これは、Multimediaファイルを保存および取得するために、CloudinaryやAWS S3などのサードパーティサービスを統合することで実行できます。 socket.ioを使用してマルチメディアデータをリアルタイムで送信および受信することもできます。チャットルームWebアプリの機能。 node.jsアプリの場合、ユーザー認証を処理するために人気のあるミドルウェアであるpassport.jsを使用できます。ローカルユーザー名とパスワード、OAUTH、JWTなど、さまざまな認証戦略をサポートしています。バックエンドテクノロジーであり、フロントエンドフレームワークまたはライブラリで動作することができます。チュートリアルではプレーンHTMLとCSSを使用していますが、React、Angular、Vue.jsなどのフロントエンドフレームワークを使用して、より複雑でインタラクティブなユーザーインターフェイスを構築できます。 APP?
エラー処理は、Webアプリケーションの重要な部分です。 node.jsでは、ミドルウェアを使用してエラーを処理できます。これには、エラー、リクエスト、応答、次の4つの引数を取得する特別な関数を作成することが含まれます。その後、この関数を使用してエラーを記録したり、クライアントにエラー応答を送信したり、ユーザーをエラーページにリダイレクトできます。
以上がnode.js駆動のチャットルームWebアプリ:ノード、mongodb、ソケットを作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

JavaScript文字列置換法とFAQの詳細な説明 この記事では、javaScriptの文字列文字を置き換える2つの方法について説明します:内部JavaScriptコードとWebページの内部HTML。 JavaScriptコード内の文字列を交換します 最も直接的な方法は、置換()メソッドを使用することです。 str = str.replace( "find"、 "置換"); この方法は、最初の一致のみを置き換えます。すべての一致を置き換えるには、正規表現を使用して、グローバルフラグGを追加します。 str = str.replace(/fi

それで、あなたはここで、Ajaxと呼ばれるこのことについてすべてを学ぶ準備ができています。しかし、それは正確には何ですか? Ajaxという用語は、動的でインタラクティブなWebコンテンツを作成するために使用されるテクノロジーのゆるいグループ化を指します。 Ajaxという用語は、もともとJesse Jによって造られました

記事では、JavaScriptライブラリの作成、公開、および維持について説明し、計画、開発、テスト、ドキュメント、およびプロモーション戦略に焦点を当てています。

この記事では、ブラウザでJavaScriptのパフォーマンスを最適化するための戦略について説明し、実行時間の短縮、ページの負荷速度への影響を最小限に抑えることに焦点を当てています。

この記事では、ブラウザ開発者ツールを使用した効果的なJavaScriptデバッグについて説明し、ブレークポイントの設定、コンソールの使用、パフォーマンスの分析に焦点を当てています。

マトリックスの映画効果をあなたのページにもたらしましょう!これは、有名な映画「The Matrix」に基づいたクールなJQueryプラグインです。プラグインは、映画の古典的な緑色のキャラクター効果をシミュレートし、画像を選択するだけで、プラグインはそれを数値文字で満たされたマトリックススタイルの画像に変換します。来て、それを試してみてください、それはとても面白いです! それがどのように機能するか プラグインは画像をキャンバスにロードし、ピクセルと色の値を読み取ります。 data = ctx.getimagedata(x、y、settings.greasize、settings.greasize).data プラグインは、写真の長方形の領域を巧みに読み取り、jQueryを使用して各領域の平均色を計算します。次に、使用します

この記事では、jQueryライブラリを使用してシンプルな画像カルーセルを作成するように導きます。 jQuery上に構築されたBXSLiderライブラリを使用し、カルーセルをセットアップするために多くの構成オプションを提供します。 今日、絵のカルーセルはウェブサイトで必須の機能になっています - 1つの写真は千の言葉よりも優れています! 画像カルーセルを使用することを決定した後、次の質問はそれを作成する方法です。まず、高品質の高解像度の写真を収集する必要があります。 次に、HTMLとJavaScriptコードを使用して画像カルーセルを作成する必要があります。ウェブ上には、さまざまな方法でカルーセルを作成するのに役立つ多くのライブラリがあります。オープンソースBXSLiderライブラリを使用します。 BXSLiderライブラリはレスポンシブデザインをサポートしているため、このライブラリで構築されたカルーセルは任意のものに適合させることができます

データセットは、APIモデルとさまざまなビジネスプロセスの構築に非常に不可欠です。これが、CSVのインポートとエクスポートが頻繁に必要な機能である理由です。このチュートリアルでは、Angular内でCSVファイルをダウンロードおよびインポートする方法を学びます


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ドリームウィーバー CS6
ビジュアル Web 開発ツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ホットトピック



