問題タブ [libstrophe]
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 - libstrophe を使用した XMPP 自動再接続
libstrophe を使用すると、接続が失われたときに自動的に再接続できますか。クライアント側で次のコードを使用しました。
クライアントが初めて接続されると、「DEBUG: 接続されました」というメッセージが表示されます。サーバーが完了すると、「DEBUG: 切断されました」というメッセージが表示されます。ただし、サーバーが 2 回目に起動したとき、クライアントは自動的に再接続されません。
c++ - C++で一意のラムダインスタンスを作成するには? または、libstrophe を使用して xmpp で id メッセージ ハンドラーを設定する方法を教えてください。
C libstrophe ライブラリを使用して、C++11 で xmpp アプリケーションを作成しています。特定の ID のメッセージ ハンドラーを登録しようとしているので、xmpp_id_handler_addを使用して特定の戻りメッセージを認識できます。
しかし、私が理解していないこれのstropheの実装について何かがあります.
Strophe は、次の形式の関数ポインターのみを受け入れます。
静的関数を使用するのは簡単ですが、ソースコードを調べると、これが見つかります
つまり、同じ静的関数で xmpp_id_handler_add を 2 回呼び出そうとすると、ID とユーザーデータが異なると、2 回目の呼び出しが拒否されます。
そのため、新しい ID ハンドラーを追加するたびにラムダを作成できるのではないかと考えました。
しかし、ラムダのポインター値を見たとき
2回実行したところ、両方とも同じ値が得られました。この場合、ラムダは静的関数のようです。
では、新しい ID をリッスンするたびに、新しい一意の関数ポインターを作成するにはどうすればよいでしょうか? あるいは、libstrophe の使用方法を誤解していますか? リッスンする新しい ID ごとに新しい静的関数を用意する必要がありますか?