問題タブ [strophe.js]
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.
ionic-framework - ステータス 10 の Ejabbered からの strophe の切断
私の ionic 4 アプリケーションでは、strophe.js を使用して Ejabbered サーバーに接続しています。ステータスが接続された後のアプリケーションでは、チャットを正常に表示できますが、しばらくすると自動的に切断され、何もせずにチャットが消えます。
ログでは、Strophe は次のステータスで切断されています。
EjabService [接続] 不明なステータスを受け取りました: ステータスは 10 です
また、一部のデバイスでは、接続の問題によりチャットを表示できません。
インストール済みのバージョン: 20.03
Strophe.js を使用して Ejabbered サーバーに接続するコードは次のとおりです。
javascript - typescript から javascript lib を使用する (継承された javascript 依存関係を持つ)
環境
チャット サーバーと通信するためにプレーンな Typescript でプロジェクトを構築しています。そのコミュニケーションのために、私はstrophe.js libを使用しています。
Strophe lib には、commonjs、esm、およびumdの 3 つのフレーバーがあります。検索した内容によると、これらの形式の違いがよくわかりません。
- commonjsはノード用です
- Web アプリ用のesm
- umdはジェネリックです
このアプリはブラウザーで実行することを目的としているため、これに基づいてesmまたはumdを使用できます。
strophe ライブラリのラッパーとして機能する Typescript ファイルを作成しました。これは私がそれをインポートする方法です:
私の問題
ESM形式を使用する場合:
インターフェイスの定義を確認したり、その関数を呼び出したりできます。すべて問題ありませんが、ブラウザーは次のようにスローします。
Uncaught TypeError: Failed to resolve module specifier "abab". Relative references must start with either "/", "./", or "../".
UMD形式を使用する場合:
最初はエラーではありませんが、Strophe が正しくインポートされていません。connect 関数を呼び出そうとすると、次のエラーがスローされます。
Uncaught TypeError: Cannot read property 'Connection' of undefined
アップデート
サンドボックス: https://codesandbox.io/s/bitter-grass-sh4s9
これをテストするために実行tsc
しlive-server
てから、ファイルを提供します
tsconfig.json
javascript - 同期 XMLHttpRequest Strophe.js
Strophe.js (JS ベースの Xmpp ライブラリ) を使用しています。問題は、受信した応答が正しい順序になるように同期接続を確立する必要があることです。しかし、同期接続を使用すると、ページの種類がスタックします。右クリックしてコンソールを開くだけでも数分かかります。
ページにこの警告が表示されます。
[非推奨] メイン スレッドでの同期 XMLHttpRequest は、エンド ユーザーのエクスペリエンスに悪影響を与えるため、非推奨です。詳細については、https://xhr.spec.whatwg.org/を確認してください。
助けてください!
xmpp - 初めて Ejabberd に接続すると「invalid-namespace」が生成されるが、2 回目は成功する
XMPP サーバーとして Ejabberd を使用します。今、私は問題を抱えています。strophe.js を使用して Ejabberd を接続します。
初めて Ejabberd に接続すると、「無効な名前空間」が表示されますが、2 回目は機能します。
最初の試行の XMPP メッセージは次のとおりです。