私はこれを読んだだけです post 、そして私は違いが何であるかを理解しています。しかし、私の頭の中にはまだ疑問があります。同じアプリ/ウェブサイトで使用できますか? AngularJsにコンテンツを取得してページを更新させ、REST apiとそのすべてのものに接続します。しかし、それに加えてリアルタイムチャット、またはイベントをトリガーしたいとも考えます更新またはメッセージが受信されたときに他のクライアントで。
Angularはそれをサポートしますか?または、これらのイベントをトリガーするためにSocket.ioのようなものを使用する必要がありますか?両方を使用する意味がありますか?両方を一緒に使用する目的がある場合。
私が十分に明確であることを願っています。助けてくれてありがとう。
JavascriptはWebSocketをサポートしているため、使用するために追加のクライアント側フレームワークは必要ありません。これをご覧ください $ connection service これで宣言されています WebSocketベースのAngularJSアプリケーション 。
基本的にメッセージを聞くことができます:
$connection.listen(function (msg) { return msg.type == "CreatedTerminalEvent"; },
function (msg) {
addTerminal(msg);
$scope.$$phase || $scope.$apply();
});
一度聞く(要求/応答に最適):
$connection.listenOnce(function (data) {
return data.correlationId && data.correlationId == crrId;
}).then(function (data) {
$rootScope.addAlert({ msg: "Console " + data.terminalType + " created", type: "success" });
});
メッセージを送信します。
$connection.send({
type: "TerminalInputRequest",
input: cmd,
terminalId: $scope.terminalId,
correlationId: $connection.nextCorrelationId()
});
通常、WebSocket接続は双方向であり、 適切なサポートがあります であるため、要求/応答モデルでサーバーからデータを取得するためにも使用できます。次の2つのモデルを使用できます。
Publisher/Subscriber:クライアントがいくつかのトピックへの関心を宣言し、そのトピックを含むメッセージのハンドラーを設定し、サーバーがメッセージをパブリッシュ(またはプッシュ)する場所それが合うと思うときはいつでも。
リクエスト/レスポンス:クライアントがrequestID(またはcorrelationId)でメッセージを送信し、そのrequestIdに対する単一のレスポンスをリッスンします。
それでも、必要に応じて両方を持つことができ、データの取得にはRESTを、更新の取得にはWebSocketを使用します。
サーバー側では、WebSocketをサポートするバックエンドを使用するには、Socket.ioまたはサーバー側のフレームワークを使用する必要があります。
リンクされた投稿の answer に記載されているように、Angularは現在Websocketsの組み込みサポートを備えていません。したがって、Websockets APIを直接使用する必要があります。または、Socket.ioのような追加のライブラリを使用します。
ただし、単一のREST=アプリケーションでAngular apiとWebsocketsの両方を使用する必要があるかどうかの質問に答えるために、アプリケーションのさまざまな部分に含まれる特定の機能のために、$ httpまたはBreezeJSなどの別のデータ層ライブラリを使用して、REST apiと対話するための標準XmlHttpRequestリクエストと、例:リアルタイムチャット)。
Angularは、このタイプのシナリオの処理を支援するように設計されています。典型的な解決策は、アプリケーションの機能を処理し、ページを更新する1つ以上のコントローラーを作成し、各データエンドポイントのデータ管理をカプセル化する個別のサービスまたはファクトリーを作成することです(つまりREST apiおよびリアルタイムチャットサーバー)、これらはコントローラーに挿入されます。
angularデータ接続を管理するためのサービス/ファクトリーの使用に関する多くの情報があります。Angularアプリケーションとデータサービスが適合する場所については、John-Papaの AngularJS Styleguide を確認することをお勧めします。これには Data Services のセクションが含まれます。
工場とサービスの詳細については、 AngularJS:ファクトリーの代わりにサービスを使用する場合 をチェックアウトできます。