問題タブ [go-libp2p]
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.
erlang - クライアント (go-libp2p と erlang-libp2p) 間で libp2p yamux プロトコルのネゴシエーションが失敗する
私は libp2p を初めて使用し、標準の TCP トランスポートを介して、ある libp2p ピア (erlang-p2p) から別の (go-libp2p) への正常な接続を確立しようとしています。erlang クライアントは安定して維持されているクライアントであり、golang でそのクライアントを複製しようとしています。
2 つの erlang クライアント間の最初のネゴシエーション プロセスは、送受信される生データの読み取りに基づいて次のようになります (クライアント A がクライアント B に接続しています)。
注: yamux プロトコル ID の先頭のバックスラッシュが省略されているのは意図的なものであり、これは erlang クライアントによって送信されているものです。
上記が確立された後、セッションを作成することができます。ただし、クライアント B を単純な go-libp2p ホストに交換すると、ステップ 2 のネゴシエーションがうまくいきません。単純な go-libp2p クライアントに使用しているコードは次のとおりです。
erlang クライアントが go クライアントに接続しようとすると、マルチストリーム プロトコルは正常にネゴシエートされますが、yamux プロトコル ID を受信した後、go クライアントは、na
libp2p を明示的に指定したにもかかわらず、このプロトコルをサポートしていないことを示す返信を返します。設定オプションで yamux を使用します。さらに、こちらのドキュメントによると、デフォルトの構成オプションでも yamux/1.0.0 をサポートする必要があるようです。
何か基本的なことが欠けているように感じます。助けていただければ幸いです。
私がすでに試したこと:
- すべての構成を削除し、デフォルトの libp2p 設定を使用する
- 構成にオプションを追加し
NoSecurity
ます (私が知る限り、erlang クライアントはセキュリティをネゴシエートしていないように見えます) - Muxer ID を
"yamux/1.0.0"
に変更する"/yamux/1.0.0"
go - 未定義: go libp2p の実行中に ctx が検出されました
コードは次のとおりです。これはgo-libp2pの公式デモです。他の参照や未定義のエラーは発生しませんでした
インポートは次のとおりです。
go - go-libp2p-http の例を実行するときのバグ
問題はgo funcにあります。エラーメッセージはgoの式である必要があります関数呼び出しです
エラーは
command-line-arguments
.\sever.go:18:5: go の式は関数呼び出しでなければなりません