問題タブ [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.

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

c - libstrophe を使用した XMPP 自動再接続

libstrophe を使用すると、接続が失われたときに自動的に再接続できますか。クライアント側で次のコードを使用しました。

クライアントが初めて接続されると、「DEBUG: 接続されました」というメッセージが表示されます。サーバーが完了すると、「DEBUG: 切断されました」というメッセージが表示されます。ただし、サーバーが 2 回目に起動したとき、クライアントは自動的に再接続されません。

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

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 ごとに新しい静的関数を用意する必要がありますか?