問題タブ [xmpp4r]

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 に答える
789 参照

ruby - xmpp4r Ruby gem を使用して、連絡先がオンラインかどうかを同期的に検出するにはどうすればよいですか?

私は XMPP と xmpp4r ライブラリを初めて使用するので、これが明らかにどこかに文書化されている場合は、初心者の質問を許してください。

特定の JID がオンラインかどうかを同期的に確認する最も簡単な方法は何ですか? (if ステートメントで is_online?(jid) のようなものを呼び出せるようにするため)

私の詳細:

Web サーバーで特定の URL が要求されたときにユーザーにメッセージを送信しようとする Sinatra アプリを作成していますが、そのユーザーが現在オンラインである場合にのみユーザーにメッセージを送信しようとする必要があります。特定の JID がオンラインかどうかを判断するのが私の問題です。

ここで、接続してすべての最初のプレゼンス プローブ応答が Roster ヘルパーに返されるまで数秒待つと、Roster からそれらのプレゼンスを調べて #online? を呼び出すことができることがわかりました。それらで正しい値を取得します。しかし、すべてのプレゼンス アップデートがいつ送信されたかはわかりません。そのため、競合状態が発生#online?し、ロスターからプレゼンスを呼び出すと、そのプレゼンス プローブ応答をまだ受信していない場合に false が返されることがあります。

したがって、私の現在の考えでは、誰かがオンラインかどうかを調べる最も簡単な方法は、タイプ :probe の新しいプレゼンス メッセージを作成し、それを関心のある JID に送信することです。これが私が行っている方法です。たった今:

現在、これはユーザーが実際にオンラインである場合に機能しますが、ユーザーがオフラインの場合、返されたプレゼンス プローブ メッセージが、presence_callbackそれをどう処理すればよいかわからない他のハンドラーによってキャッチされているように見えます。is_online?関数は値を返すことを決して終了しません。

簡単な例 is_online を提供することで、誰かが私を助けることができますか? または、プレゼンスをチェックする前に、名簿がすべての初期プレゼンス更新の取得を完了したことを検出する方法について、正しい方向に向けてください。#online?

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

ios - iPhoneチャットアプリのポート番号を取得する方法

チャットアプリを開発しています。

しかし、今はGoogleのポート番号しか知らないので、Googleだけでチャットが可能です。

ご覧のとおり、Google は 5222 をポート番号として設定しています。

同様に、yahoo、windows メッセンジャー、およびその他の人気のあるサイトのポート番号を設定したいのですが、これらすべてを取得するにはどうすればよいですか?

(それはそのようなものですか - 「XMPPはGoogleのものに固有のものです」? ? )

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

ruby - XMPP4Rコールバックが機能しないようです

xmpp4rを使用していて、後でRailsアプリに実装したい基本的なチャット機能のコツをつかもうとしています。Rubyスレッドに関する私の基本はまだ少し不安定なので、これについて助けていただければ幸いです。

コールバックを登録しましたが、Gmailアカウントからの応答がありません。メッセージを送信できますが、rubyプログラムが終了します。それが終了するのを防ぐために、私はプログラムのスレッドを止めようとしましたが、それを動作させることができないようです。

0 投票する
4 に答える
594 参照

ruby - Rubyを使用して、XMLスニピットが有効であることを確認するにはどうすればよいですか?

ご存知の方もいらっしゃると思いますが、私はStackOverflowチャットシステムのXMPP(Jabber)統合に取り組んでいます。これは、xmpp4rパッケージを使用してRubyで記述されたXMPPコンポーネントです。

私は1つの問題に苦労しています(まあ、多くの問題がありますが、現時点では1つの問題です:-)チャットからJSONフィードを取得し、メッセージのHTMLを抽出しています。私はRubyTidyHTMLバインディングを使用してHTMLをXHTMLにフィードされたJSONから変換してXMPPメッセージとして送信できるようにしています-XMPPメッセージは単なるXMLであるため、HTMLをXHTMlに変換すると有効なXMLになります。<message>スタンザに固執するだけです。

ほとんどのメッセージでは、うまく機能します!

私の心は吹き飛ばされます

ただし、他のメッセージの場合は、完全にチョークします。XMPPサーバーがストリームを閉じ、スクリプトが停止します。(そして居酒屋のrchernと他の人は動揺します。まあ、動揺していないかもしれませんが、彼らは私を笑います。これは私を悲しくさせます!)

何らかの理由でメッセージが有効なXMLではないことが原因であるとほぼ確信しています。そのため、XMPPサーバーは、RubyコンポーネントからのXMLストリームで解析エラーが発生したため、接続を閉じています。このようなメッセージの例を次に示します。

(このメッセージはたまたまチャットルームへのワンボックスリンクの引用でした)

これがRubyが私に与えたエラーでした:

最後に、私の質問です!

無効なXMLをXMPPサーバーに送信すると、XMPPサーバーに送信する前に、Rubyを使用してXMLを検証(およびできれば修正)できる方法はありますか?おそらく、それを修正するのは、Tidyが有効なXMLを生成していない場合ごとに追加のコードを書くことですが、少なくともスクリプトがクラッシュするのを防ぎたいと思います。では、XMLをXMPPサーバーに送信する前にXMLを検証するにはどうすればよいですか?

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

ruby - XMPP (Jabber) メッセージで Web 上の画像を送信するにはどうすればよいですか?

スタック オーバーフロー チャットのXMPP インターフェイスについては、現在、チャット メッセージの HTML を取得して有効な XML に変換し、それを XMPPオブジェクトのhtml子要素として設定しています。message私の Mac OS X jabber クライアントでは、これはうまく機能していました。これは、SO チャットのユーザーがワンボックス化された画像を投稿すると、その画像が XMPP クライアント (OS X の Adium) に表示されることを意味していました。

マイ・マインド・イズ・ブロー

しかし、私は Adium を最新バージョンに更新したところ、どうやら彼らは私が行っていることをセキュリティ ホールであり、XMPP 仕様に反していると見なし、その動作を変更したようです。彼らの理由は、XMPP はあなたの IP アドレスを明らかにすべきではなく、HTTP 経由で画像をフェッチすると私の IP アドレスが明らかになるというものでした。

そのため、チャットは XMPP を介してイメージレスになります。XMPP で画像を機能させるにはどうすればよいですか? XMPP コンポーネントは画像をダウンロードして<Message>スタンザに埋め込む必要がありますか? XMPP サーバーを介して画像をプロキシできますか? それともこれは不可能ですか?

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

xmpp - 別のプロトコルへの XMPP トランスポート

jabber-transport を使用してアプリケーションに ICQ のサポートを追加したいと考えています。xmpp4r Ruby のライブラリを使用します。

私が見つけたのは、外部(icq)サーバーにログインする方法とメッセージを送信する方法を示していません。

その方法のコードまたはテキストの説明の例を示してもらえますか? (xmpp4r と Ruby を使用していない可能性があります。必要なのはヒントだけです。)

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

ruby - Ruby 24/7 動作 XMPP ボット

誰かがこれで私を助けてくれますか? ある言語で単語を受け取り、データベースを調べ、翻訳を取得して送り返すボットを作成したいと思います。共有ホスティングでは不可能ですが、独自のサーバーまたは VDS では可能です。EventMachine や xmpp4r などのライブラリを使用してボットを作成する必要がありますか? はいの場合、一度に多くのリクエストを処理する方法は?

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

ruby-on-rails - Jabber を使用した Gtalk ステータスの設定

Jabber を使用して gTalk サーバーと通信しています。現在、正常に接続できています。また、メッセージの送受信もできます。しかし、私は自分のgtalkプレゼンスを忙しいとして設定することはできませjabber.status

どこが間違っているのか教えていただけますか?ありがとう。

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

multithreading - Ruby XMPP4R ボットとスレッド - トラブル

ボットが並列スレッドでメッセージを送受信するようにします。また、ユーザーからメッセージを受信したときに、ボットがメッセージをユーザーに送り返すことも望んでいます。しかし今、彼はそれを5秒ごとにユーザーに送り返しています。「ループdo」を使用したためだと理解していますが、無限ループがないとコールバックを使用できません。では、並列スレッドでメッセージを送受信するにはどうすればよいでしょうか? メッセージを受信するときの「ループ問題」を克服するにはどうすればよいですか?

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

ruby-on-rails - インバンド登録用の xmpp4r および Iq.new_register

ここのSOスレッドに従って、xmpp4rを使用してインバンド登録を行うのに問題がありました。

別のプロトコルへの XMPP トランスポート

問題は、次のコードを実行すると、new_register の NoMethodError Exception エラーが発生することです。

ファイル iq.rb の xmpp4r gem で、次のように定義された new_register メソッドを確認できます。

しかし、クラスのメソッドを調べると、new_register メソッドが表示されません。IE

'xmpp4r/iq' の new_register メソッドにアクセスできない理由がわかりませんか?