問題タブ [cometd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - CometD で Cookie ドメインを設定する
これらの Cookie のドメインを設定していないため、CometD .NET でsetCookie(string, string)
メソッドを呼び出すと例外がスローされますが、ドメインを設定するためのプロパティまたはメソッドが表示されず、オーバーロードのいずれもドメインをパラメータ。BayeuxClient
setCookie(...)
コード:
java - CometD / jQuery クライアント エラー 402::不明なクライアント
さまざまなプッシュ テクノロジ間の技術的な比較のための経験的な背景が必要なので、CometD を使い始めようとしています。
最終的に、Tomcat (v7.0) でサンプル コードを実行することができました。
今、私は奇妙な振る舞いをしており、何が間違っていたのかを必死に見つけようとしています.
ここに私の観察があります:
接続ループ:
クライアントとの無限の接続ループで実行しています。
リクエスト:
応答:
これについて興味深いのは、Listener-callback イベントが実際に発生することです。
/li>クライアント接続要求がスタックする
これは主に、Tomcat サーバーを再起動した後に発生します。2 つのチャネルへのサブスクリプションが成功したことを確認できます。
リクエスト
応答
リクエスト
応答
この後の呼び出しはスタックし、永遠にかかります。
... abd ここに私のコードがあります
クライアント
/li>サーバ
これは、配布パッケージの例からほぼ 1:1 であることに注意してください!
}
Web.xml ファイル
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
たぶん私は何か完全に間違ったことをしているのかもしれませんが、私はこれについて少し必死になり始めています. 助けていただければ幸いです。
dojo - dojo を使用した cometd hello world の例
私はここで基本的な cometd の例に従おうとしています: http://dojotoolkit.org/reference-guide/1.7/dojox/cometd.html
古いモジュールローダーを使用しているため、次のように同等のものを試しました:
これは機能せず、モジュールのロードに関係していると思います-ready関数内のコードがまったく実行されないため、ある種のサイレントエラーが発生します。私が見つけたのは、「dojox/cometd」require ステートメントが存在する場合、ready 関数内のコードが実行されないことです。
実行例: http://jsfiddle.net/Q9W8f/2/
dojox/comted を削除した例: http://jsfiddle.net/mMs2h/4/
私は新しいモジュール ローダーをあまり使っていないので、単純な誤解があるだけに違いありません。
ヘルプ!
jetty - cometdセッションとHTTPセッションのペアリング
Jetty 8.1、dojo、cometdを使用するWebアプリケーションがあり、(1)同期操作用のJSON / HTTP REST APIと(2)サーバーから多数のイベントを受信するcometdAPIを使用してブラウザーとWebコンテナー間で対話します。
特にcometdは可能な限り通常のHTTPの代わりにwebsocketを使用するため、これら2つの異なるAPIの認証セッションをエレガントに管理する方法については完全には明確ではありません。アプリケーションは、標準のJettyLDAPモジュールを使用したフォームベースの認証を使用しています。したがって、HTTPの観点からは、コンテナはブラウザに次のような標準のjsessionidを提供します。
ここでのSimoneBordetの投稿に基づくと、推奨される解決策は、cometdハンドシェイク中にこのトークンを渡すことです。これは私たちが行っていることです。
私たちが抱えている問題は、HTTPセッションとBayeuxcometdセッションの2つの根本的に異なるセッションがあることです。潜在的なメモリリークやセキュリティの問題などの理由で、それらを一斉に終了するか、「ペアリング」する必要があります。ユーザーのHTTPセッションが終了した場合、対応するBayeuxセッションも終了する必要があります。その逆も同様です。これを行うための推奨される方法はありますか?
cometd - CometD の REST API
現在、jQuery クライアントの実装と共に CometD サーバーを使用しています。私が知りたいのは、クライアントが情報 (つまり文字列) を取得するためにサーバーに REST API を配置する効率的な方法があるかどうかです。文字列を取得する必要があるのは 1 回だけで、その後はサービスを使用する必要はありません。
現在、私がやっている方法は、サービスチャネルを使用して、サーバーにリスナーを追加することです。次に、クライアントにランダムなメッセージをこのチャネルに送信させます。メッセージを受信すると、サーバーは文字列を取得し、同じチャネルを使用してクライアントにブロードキャストします。
ただし、これは非常に回りくどい方法だと思います。さらに、文字列を受信したときにクライアントがチャネルをリッスンする必要はありません。それを行うより良い方法はありますか?
更新: 他のリアルタイム チャネルにもこのサーバーを使用しているため、パブリッシュ/ブロードキャスト機能に CometD を選択しました。
web-applications - jettyurl-patternをルートディレクトリのみに一致させる
JettyWebAppのコンテキストパスのルートディレクトリのみをパスワードで保護したいと思います。私のコンテキストパスは/MyAppなので、アクセスするにはパスワードが必要です。
ただし、次の場合は対象外です。
私の現在の設定は以下のとおりです(url-patternに注意してください):
これは、/および/*が一般的にどのように機能するかという性質だけで機能すると思います。私はまた、これがかなりうまくいくはずだと私が信じているこのリソースを見ました:http: //www.coderanch.com/t/364782/Servlets/java/there-key-difference-between-url
ただし、私の場合、URLパターンは次のとおりです。
と
まったく同じように動作しているようです:両方
と
両方のパスワードで保護されています。
もちろん、健全性テストと同じように/ nothingishereに変更すると、/ MyApp / nothingishereを除いて、パスワードで保護されるものはありません。
Webサーブレットのルートディレクトリのみを保護する方法を知っている人はいますか?
javascript - CometD を使用してファイルの変更を常に監視する
私はアプリケーションを作成していますが、私が望むものには Comet を使用するのが最善だと言われました。私は今まで Comet の経験がありませんでしたが、少し調べた後、CometD サーバーをセットアップしました。利用可能な他のサーバーには APE が含まれていましたが、前回の改訂からしばらく経っているようで、CometD のドキュメントははるかに優れていました。
経験不足のため、どこから始めればよいかわかりません。また、ドキュメントでは、これほど具体的なケースについては説明していません。
サーバーが .txt ファイルの変更を継続的に監視し、そのドキュメントの現在の内容を HTML ページに表示するようにします。そのファイルは定期的に (およそ 2 ~ 3 分ごとに) 変更され、その変更が発生したときに、接続されているクライアントに新しいドキュメントを表示したいと考えています。
実行可能だと思います。JS を変更するだけで実行できると思います。私の唯一の質問は...どうやって始めるのですか?
java - Jetty の WebSocketClientFactory でカスタム キーストアを使用する
自己署名証明書を使用する安全な WebSocket トランスポートを介して CometD サーバーに接続する Java プロジェクトがあります。WebSocketClientFactory
次のように構成しています。
そして、私のBayeuxClient
ようなものを作成します:
実際、これが最初にロードされると、適切に構成されているように見えます。
で、実際に作品を使ってBayeuxClient
。ただし、キーストアをまったく指定しなくても機能します。署名されていない証明書として扱うだけです。そして、実際、数秒ごとに取得し続けるエラーログから判断すると、それが起こっているようです。
これは、CometDハンドシェイクが完了していることを意味しますが、SSLハンドシェイクは完了していません。ただし、なぜそうなのかはわかりません。同様のアプローチが私の HTTPS 呼び出しでも機能しています。頭を悩ませているのは WSS だけです。
Android アプリや Jetty サーブレット コンテナー内など、さまざまな環境でこれを再現できることにも言及する価値があります。
自己署名証明書で WSS を正常に使用した人はいますか? 私が間違っていることに光を当てたいですか?
java - mongodb がいくつかのバイナリ オブジェクトを保存し、他のオブジェクトを保存しないように見えるのはなぜですか?
どこから始めればよいか、どの情報が関連しているかわかりません。この問題の解決に役立つ可能性のある追加情報を教えてください。
私は単純な cometd アプリケーションを開発しており、ストレージ バックエンドとして mongodb を使用しています。アプリケーションの起動時に単一の mongodb インスタンスを取得し、このインスタンスをすべてのクエリに使用します。これは、実際には、http://www.mongodb.org/display/DOCS/Java+Driver+Concurrency に記載されているように、mongo Java ドライバーのドキュメントで推奨されています。問題はスレッドセーフに関係していると考えてストローをつかんでいましたが、そのリンクによると、mongodbは完全にスレッドセーフです。
ここが興味深いところです。を拡張するクラスがありますBasicDBObject
。
を拡張する次の 2 つのスケルトン クラスMyBasicDBObject
。
このようにクラスを設定した唯一の理由は、同じスコープ内でこれら 2 つのオブジェクトを処理する際にコードを読みやすくするためです。これにより、次のことができます...
渡されたバイト配列を反復処理することによりUtilityClass
、メソッドの名前、ビット単位、およびビット単位とまったく同じように動作します&
。^
これは私が完全に迷っているところです。 updateMapObjectsFoo()
期待どおりに機能し、データベースの変更first
をsecond
反映します。 updateMapObjectsBar()
一方、適切に更新することしかできませんfirst
。
デバッグによる検査updateMapObjectsBar()
では、バイナリ オブジェクトが実際には両方のオブジェクトで適切に更新されていることが示されていますが、問題を調査するために mongo シェルに向かうとfirst
、DB で更新されていて更新されてsecond
いないことがわかります。スレッドセーフがそれと関係があるという考えはどこから得たのでしょうか? 私を悩ませている唯一の違いは、それsecondCollection
が他の cometd サービスで使用されているのに使用されてfirstCollection
いないことです。それは一方では関連しているように見えますが、機能し、機能しないため、他方ではそうではFoo
ありBar
ません。
コードを分解して元に戻しましたが、この同じ問題に何度も戻ってきます。ここで何が起こっているのですか?
Javaジェネリックの悪夢と、言語のこの機能へのmongodbドライバーの依存である、すべての中で最も関連性のある部分を省略したようです。 BasicDBObject
は本質的に のラッパーですMap<String, Object>
。問題は、オブジェクトをそのマップに格納すると、そこに配置したときの状態に戻す必要があることです。はい、それは完全に明白に思えるかもしれません。この質問を投稿する前に、私はそれを十分に知っていました。
何が起こったのかを正確に特定することはできませんが、Java + mongodb ユーザーにこのアドバイスを提供します。多くのキャストを行い、データ構造が複雑になればなるほど、より多くのキャストが必要になります。簡単に言うと、次のことはしないでください。
ラピッド プロトタイプを作成しているときは、ワンライナーは魅力的ですが、それを何度もやり始めると間違いを犯すことになります。今より多くのコードを書いて、後でフラストレーションを感じないようにしましょう:
これは煩わしいほど冗長だと思いますが、ある種のライブラリを使用する代わりに、Mongo と直接対話することで、生活が楽になることを期待する必要があります。私はこれで自分をばかにしてしまいましたが、誰かが私の過ちから学び、多くのフラストレーションを救ってくれることを願っています.
ご協力いただきありがとうございます。
java - COMETDを使用したサーバープッシュクライアント(dojo)
サーバーからクライアントにメッセージをプッシュしようとしています。私は、tomcat6と統合されたDOJO 1.7、CometdおよびJettyを使用しています。
特定のチャネルに加入しているすべてのクライアントにメッセージをブロードキャストしたい。remore.deliverを使用すると、個々のクライアントにメッセージが送信されますが、そのチャネルにサブスクライブされているすべてのクライアントには送信されません。channel.publishは私のために機能していません...どんな助けやコメントも大歓迎です。