php エディタ Xiaoxin は、Go 1.21 に WebAssembly を介して HTTP をホストする機能が含まれるかどうかについての質問に喜んで答えます。現在、Go 1.21 バージョンは正式にリリースされていないため、その具体的な機能を判断することはできません。ただし、Go 言語についての知識に基づくと、Go は WebAssembly とネットワーク プログラミングの開発に非常に重点を置いているため、WebAssembly を介して HTTP をホストする機能が将来のバージョンで追加される可能性が非常に高いです。これにより、開発者はより柔軟で効率的な Web 開発ツールを利用できるようになります。最新のアップデートや機能を入手するには、引き続き Go 言語の公式リリース情報に注意を払うことをお勧めします。
外出先でWebAssembly経由でhttpサーバーを試してみたいと思っています。 go 1.20 はブラウザ外での Web アセンブリの go のコンパイルをサポートしていないと思います。また、net/http ライブラリは tinygo に含まれていません。
https://stackoverflow.com/a/76091829 (@tachyonicbytes に感謝) を読んだ後、gotip
を使用してこれを達成しようとしましたが、サーバー (またはその他のブロック/待機) を起動しようとするたびにfunction))、エラーが発生します: 致命的エラー: すべてのゴルーチンがスリープしています - デッドロック!
。 await 関数を使用して goroutine に移動しようとしましたが、単に関数が終了するか、同じエラーが発生します。
これが私がそれを実行する方法です:
これは例です server.go
:
それでは、これは単に go 1.21 がウィップだからなのか、ブロッキング関数を起動する正しい方法が理解できないからなのか、それとも go 1.21 がそのような機能をサポートしていないからなのか?
Intel Mac 上のサーバー側 WebAssembly Runner wasm3 で Go サーバーを起動しようとしています。 http を提供することを期待していましたが、エラーがスローされるか、すぐに終了することがわかりました。
喜んでお役に立ちます。
残念ながら、wasm ネットワーキングは go 1.21 の一部にはならないようです。 wasm でのネットワークの実装は少し複雑です。コードを実行すると、次の行が表示されました:
リーリー検査の後、次の免責事項があります: リーリー
これの難点は、wasi がソケットの部分的なサポートしか提供していないため、wasi にはまだ完全な Berkeley ソケットがないことです。良いニュースは、実際には http を、tinygo で実行できることです。 tinygo は、go
net/http パッケージとその
driver. の部分的なサポートを提供します。
この を wasm に移植しようとしています。私の記憶が正しければ、正常に動作していますが、かなり時間が経ったので、まだ変換が完了していないと思います。もしかしたら当分は無理かも知れません。
もう一つはwasm3 部分的な wasi 実装はありますが、socket 部分は実装されていない可能性があります。 @gedw99が提案したように、wasmtime、wasmer、wasmedge、wazeroなどの他のランタイムも使用することをお勧めします。
wasmedge ソケットのサポートは充実していますが、あなたの場合、実際にはコンパイラが問題です。
以上がGo 1.21 には、WebAssembly 経由で http をホストする機能が含まれますか?どうやって?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。