問題タブ [pubnub]

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.

0 投票する
1 に答える
444 参照

javascript - ページの読み込み中に pubnub と jquery/javascript を使用してサーブレットから値を更新する

私はJavaScriptと開発のフロントエンド全体に不慣れです。

これが私が使用しているものです:

  • Tomcat7 上で動作する Java サーブレット
  • レイアウト/テーマのtwitter-bootstrap
  • フォームが送信された回数を追跡する Pubnub
  • Javascript/jquery を使用して、この値を Web ページに表示します。

ウェブページの値を更新する PUBNUB.subscribe コールバックを追加しました。しかし、最初に Web ページを読み込んだとき、どの値を表示すればよいかわかりません。

この問題を克服するために私が行ったことは次のとおりです。POST リクエストで正しいパラメーターを渡すと、正常に機能している表示される金額を含む pubnub メッセージを送信するメソッドをサーブレットに追加しました。

次に、次のように jquery を使用して POST リクエストを呼び出してみました。

それを $(window).load 関数内に配置しようとしましたが、Web ページを読み込んだときに、期待どおりに動作しませんでした。すべてがロードされた後に POST が実行されることを期待していました。これにより、サーブレットから pubnub メッセージが公開され、PUBNUB.subscribe 関数のコールバック メソッドがアクティブになります。ただし、値は変更されず、html にハードコーディングされたプレースホルダーのままでした。

現在、 setTimeout("updateUses()", 1500); を呼び出しています。$(window).load 関数内から。updateUses() は、先ほど示した $.post 呼び出しとまったく同じです。

ページをロードすると、プレースホルダーの値が少しの間 (1.5 ミリ秒より長いように見えます) 存在し、その後正しい値に更新されます。setTimeout を削除して updateUses() を直接呼び出すと、何も起こりません。

値を即座に (または少なくとも顕著な遅延なしで) ロードするには、何を変更する必要がありますか?

0 投票する
2 に答える
782 参照

python - PubNub - HTML 更新のプッシュ

現在、 PubNubを使用してユーザーのページに HTML 更新をプッシュしようとしています。HTMLコードをユーザーにプッシュし(これにはリンク、引用符、HTMLを必要とするものが含まれます)、それをユーザーのテーブルの最後に追加します。

私は現在、APIを使用して次のようにメッセージを送信しようとしています:

メッセージの場所:

私の問題は、ページの更新を送信しようとすると、次のメッセージが表示されることです。

HTMLコードを送信しようとしているために、これが発生していると思いますか?

これを修正する方法/これを行うためのより良い方法に関する推奨事項はありますか? これは、Web ページにメッセージを「プッシュ」する最初の試みであるため、これをすべて間違って実装している可能性があります。

0 投票する
1 に答える
364 参照

javascript - PubNub はどのようにアカウントを JavaScript API にバインドしますか?

PubNub はあなたのアカウントをドメインでバインドしているようです。サポートでもAPIでも決定的な答えが見つからないようです。

JavaScript からパブリッシュ、サブスクライブ、または秘密鍵を使用していないため、サイトのドメインがバインドされているように見えます。これは正確ですか?

私はそれをいじることはできませんでしたが、テストのためにコードをサーバーにプッシュしたことを意味するので、それは悪いことです。

ローカル ホストを使用して Web アプリケーションをテストする方法が必要なため、これについて知る必要があります。

0 投票する
3 に答える
5537 参照

private - PubNub のベスト プラクティス: プライベート ルームを管理するには?

私は pubnub を学んでおり、そのドキュメントを読んでいますが、マルチルーム チャット ボックスを管理する方法が見つかりません。

デフォルトでは、チャンネルは誰でも聞くことができます。購読して公開するのは簡単です。

私が望んでいるのは、メインのパブリック ルーム (これまでのところ非常に良い) を持つことですが、他のユーザーに読まれるリスクなしに、誰でも他の誰とでもプライベートに話すことができる必要があります。

これらの動的な部屋にはタブが付けられ、ユーザーはある部屋から別の部屋に移動できる必要があります。

もう 1 つの要件は、誰かとプライベートに話しても、サブスクライブしている他のルームから追い出されないことです (チャット中に別のルームに新しいメッセージが投稿されたことを通知することはできます)。

これを達成するためのベストプラクティスは何ですか?

  • 別のチャネル (動的に作成) を使用しますか?
  • 1 つのチャネルを使用して、ステータス、疑似ルーム ID、または主人公に従ってメッセージをフィルタリングしますか?
  • 多重化 (1 つのソケットのみ) を使用しますか?

ドキュメントは単一の部屋での基本的なシナリオのみを説明しており、これについてはインターネット上には何もないため、これを達成するための最良の方法を知る必要があります.

ありがとうございました。

PS: PubNub が一度に 2 つ以上のチャネルを推奨していないことは知っています (これについての説明を見つけるのに苦労していますが)。

PPS: 私は socket.io で punbub を使用しています

0 投票する
1 に答える
1558 参照

c# - 長時間実行されるpubsubサーバー/サービスc#の作成

私はpubsubで遊んでいますが、これまでのところ、必要なもの(基本的なゲーム実験)には適しています。

Javascriptの観点とモバイル(AppceleratorのTitanium経由)から、pubsubを使用することの価値を実際に見ることができます。

ただし、c#/。NETでサーバーアプリを作成して(他のアイデアを受け入れることはできますが)、自分が持っているサブスクライバーキューをリッスンし、メッセージを処理する必要があります。これには、意思決定などが含まれ、場合によっては別のメッセージをたとえば、公開キュー。

これまで、サブスクライブチャネルでリッスンするC#用のRX(Reactive Extensions)で遊んできました。これまでのところ、メッセージが届くのがわかりますが、今のところ、テストするC#コンソールアプリを作成しました。

私の質問は、pubsubサブスクライバーメッセージを待って聞くための最良の方法は、Windowsサービスアプリを作成することでしょうか?または、より適切な別の手法はありますか?明らかに、ある可能性のある時点で、サーバーを2〜3台のサーバーに拡張する必要があるかもしれませんが、pubsubキュー/メッセージングの性質を考えると、負荷分散などがあれば問題はありません。

どんなアイデアでも大歓迎です!

0 投票する
2 に答える
2127 参照

php - Pubnub PHP サブスクライブ関数

私は大きな助けが必要です!

Pubnub サブスクライブ機能を PHP で動作させるのに問題があります。パブリッシュ機能は動作しますが、サブスクライブ機能は動作しません。Pubnub サイトからいくつかのコードを直接コピーしましたが、何も取得できません。何か助けはありますか?また、私の PHP バージョンは 5.2.* です。

コード:

0 投票する
2 に答える
2401 参照

javascript - pubnub を使用してアクティブなサブスクライバーのリストを取得する方法

を使ってアプリケーションを開発しましたpubnub。ここでは、現在ネットワークに接続されている (オンラインになっている) アプリケーションのサブスクライバーのリストを取得しようとしています。チタンフレームワーク(JavaScript)を使用しています。このサブスクライバーのリストを取得する方法を教えてください。前もって感謝します。

0 投票する
1 に答える
323 参照

titanium-mobile - pubnubで特定のチャネルのサブスクライバーのリストを取得する方法

pubnubを利用してチタンでアプリケーションを書いています。特定のチャネルに登録しているすべての人のデバイスIDまたは特定の詳細を取得する必要があります。特定のチャネルへのすべての加入者のデバイスIDを取得する方法を教えてください。

ありがとう

0 投票する
1 に答える
1013 参照

rest - REST と PubNub プッシュ アーキテクチャを使用したチャット

チャット アプリケーションの私の主な使用例は、通常、1 人のエージェントが 1 人のゲストと話すことです。せいぜい一桁台前半の数のゲストとエージェントをサポートすることを計画していますが、そのような機能の使用は非常に少ないでしょう. ただし、さらに重要なことは、HTTP ステータスによってメッセージの受信が確認されるため、送信者が独自のメッセージを受信する必要がないことです。

「プッシュ専用」にPubNubの利用を検討しています。したがって、各クライアントは HTTP (PUT/POST) 経由でアプリケーション Web サーバーにメッセージを送信し、独自の PubNub サブスクリプション チャネル経由でのみメッセージを受信します。

Web サーバー アプリケーションは、HTTP チャット メッセージを受信すると、メッセージが送信されるクライアントをマッピングし、それらの特定のクライアントのチャネルにメッセージを発行します。への呼び出しを伴うループPubNub.publish(client_channel_id, the_message)

このように、各クライアントは複数のチャネルではなく 1 つのチャネルのみをサブスクライブする必要があり、すべてのクライアントはそのクライアント向けのメッセージのみを受信します (つまり、グローバル チャネルやクライアントでのフィルタリングはありません)。

(Redis を使用して、どのクライアントがどの部屋でチャットしているかのマップを保持することも検討しています。そのため、Web アプリがチャット メッセージを受信するたびに、(ローカル キャッシュを使用して) 最初に Redis にチェックインして、メッセージの宛先をマッピングする必要がある場合があります)。チャネル...)

潜在的な問題

  • サーバー全体で単一の PubNub 接続を使用すると、おそらく十分に拡張できません。接続のプールは、おそらくより適切に機能します。これらの接続をブロードキャストするだけで、サブスクライブしていないので、単純なはずですよね?

この設計で他に潜在的な問題はありますか? 他のコメント?

0 投票する
1 に答える
9790 参照

pubnub - 2 つのプライベート チャンネル間の PubNub パブリッシュ メッセージ

私はPHPとMySQLを使用しています。

pubnub プッシュ API にサインアップしたばかりで、Pubnub が提供する PHP プッシュ API を使用して最初のプッシュ通知を正常に作成しました。私はこのリアルタイム テクノロジに慣れていないので、自分で理解するのが難しいと思ういくつかの質問を思いつきました。私は何度もグーグルで検索し、stackoverflow全体を検索しました。他に関連する提案や質問が得られなかったので、ここに質問を書き留めて、アドバイスや専門知識の助けを求めています.

Pubnub は、クライアントごとに 2 つ以上のチャネルを作成するのは良くないと述べています。したがって、私のアプリケーションでは、Web サイトのどこでも発生する通知をリッスンするために 2 つ以上のチャネルを作成する必要がありますが、Pubnub が提案したように、ログインしているユーザーごとに 2 つのチャネルを使用します。

  1. ログインしたユーザーは Channel1-Public をリッスンします
  2. ログインしたユーザーは、プライベートの UsersOwnDynamic-Channel をリッスンして、関連する通知を受け取ります。

参考までに: PubNub のこのリンクは、チャネル スヌーピングを回避するために LongChannel 名を作成することについて述べています。

私の質問は次のとおりです
。 A. Web サイトにログインするたびに、常に新しいプライベート動的チャネル名を作成する必要がありますか。もしそうなら、他のユーザーが私のプライベート チャネルに通知を送信する方法を知るにはどうすればよいでしょうか。または、他の認証されたユーザーがテーブルをクエリして私のプライベート チャネルを取得できるように、データベース テーブルに静的チャネル名を 1 つだけ格納する必要がありますか?通知を送信する名前。この場合、ハッカーが特定のユーザーのプライベート チャンネル名を入手すれば、そのチャンネルを聞くことができると思いませんか?

BI は PHP と MySQL を使用しているため、別のユーザーのプライベート チャネルにメッセージを送信する方法を考え出すことも、解決策を思い付くこともできません。
簡単な友達リクエストシステムの例を見てみましょう。
- UserA が UserB に友達リクエストを送信します。
- UserB は、DynamicPrivateChannelB と呼ばれる自分自身の動的プライベート チャネル名をリッスンしています
(UserA は、プライベートである UserB のチャネル名をどのように見つけるのでしょうか?私は、これに対する唯一の方法は、UserB のプライベート チャネルをすべてのデータベース テーブルに格納することだと考えています。ログインしているユーザーがクエリを実行します。私の考えは正しいですか?)

C. 動的なプライベート チャネル名を常に生成し、データベース テーブルに格納し、新しい動的チャネル名が生成されるたびに更新する場合。新しい動的プライベート チャネル名が古い名前に置き換わるため、一部のメッセージが配信されないため、問題が発生すると思います。

D. そのため、新しい友達のリクエスト、新しいプライベート メッセージの返信、新しいギフトのリクエストなど、1 つのチャネルに送信する通知がたくさんあります。これらすべてのデータをチャネルに送信する方法と、受信した新しい通知データを見つけて解析する方法。JSON が送信する形式であることは知っていますが、送信の形式についてはわかりません。

このリンクによると、単一の Pubnub チャネルには最大 100 個のメッセージしか含めることができません。一度に 200 件のメッセージが 1 つのチャネルに届いた場合、最初の 100 件が配信され、残りはキューに入れられるということですか? 一度に 10,000 件のメッセージが 1 つのチャネルに届いたらどうでしょうか。残りのメッセージはすべてキューに残りますか? もしそうなら、それはどのようにしてサブスクライバーにリアルタイムで配信されますか?

私が達成しようとしている別の簡単なシナリオを挙げましょう。

  • UserAは認証され、Web サイトにログインします。
  • UserAは、独自の動的チャネル名UserAx732dsw3efsdfsdfsdfを生成します。
  • UserAは、新しく作成したチャネルUserAx732dsw3efsdfsdfsdf
    のリッスンを開始します (これで、userA は他のユーザーからのメッセージの受信を開始するはずです)


- UserBがuserAにプライベート メッセージを送信します。
(ここで、新しいプライベート メッセージについてプライベート チャネルで通知されるのは userA だけです。userBまたは システム、チャネル名UserAx732dsw3efsdfsdfsdfをどのように見つけることができます?これと同じことがuserBにも起こっています. userBが他のエンティティまたはシステムから再度通知を受ける必要がある場合は、 userBの動的チャネル名を見つける方法が必要です.

別の問題は、このシナリオは、ユーザーが Web サイトにログインするたびにチャネル名を動的に生成している場合です。動的チャネルに送信されたすべてのメッセージはどうなりますか? pubnub は作成したすべてのチャンネル名をサーバーに保存しますか? チャンネル名がまだ所有されていて、少なくとも 1 人のユーザーがそのチャンネルを聞いているかどうかをシステムまたはユーザーが確認できる方法はありますか?

私が持っている次の概念のため、これを知りたいと思っています。

  • UserAは、午前 1時にWeb サイトにログインすると、dynamicChannelAを作成します。
  • UserA が自分の動的チャネルに大量の通知プッシュアウトを受け取り始めますdynamicChannelA
  • ここで、UserAは午前 1 時 30 分に Web サイトからログアウトします。ユーザー A が次に Web サイトにログインするまでに、UserAは別の動的チャネルをリッスンするため、動的チャネル Aにまだ通知をプッシュしている他の多くのユーザーはどうなるでしょうか。チャンネル名。UserAは、以前のチャネルdynamicChannelAをリッスンしません。


データベーステーブルから特定のユーザーのチャンネル名を取得する方法を考えています。チャンネルの不正な購読を防ぐ方法または方法はありますか? チャンネル名の長さに関係なく、サブスクライブキーとチャンネル名があれば、誰でもチャンネル名にサブスクライブできるからです。すべてのサブスクリプションはクライアント側で行われ、サブスクリプション キーとチャネル名が表示されるので、ちょっと興味があります。