> 백엔드 개발 > Golang > Go 1.21에는 WebAssembly를 통해 http를 호스팅하는 기능이 포함되나요? 어떻게?

Go 1.21에는 WebAssembly를 통해 http를 호스팅하는 기능이 포함되나요? 어떻게?

王林
풀어 주다: 2024-02-09 23:20:25
앞으로
1160명이 탐색했습니다.

Go 1.21 会包含通过 WebAssembly 托管 http 的功能吗?如何?

php 편집자 Xiaoxin은 Go 1.21에 WebAssembly를 통해 HTTP를 호스팅하는 기능이 포함되는지 여부에 대한 귀하의 질문에 기꺼이 답변해 드립니다. 현재 Go 1.21 버전은 공식적으로 출시되지 않아 구체적인 기능을 확인할 수 없습니다. 그러나 Go 언어에 대해 우리가 알고 있는 바에 따르면 Go는 WebAssembly 개발 및 네트워크 프로그래밍에 매우 중점을 두고 있기 때문에 향후 버전에서는 WebAssembly를 통해 HTTP를 호스팅하는 기능이 추가될 가능성이 매우 높습니다. 이는 개발자에게 보다 유연하고 효율적인 웹 개발 도구를 제공할 것입니다. 최신 업데이트와 기능을 얻으려면 Go 언어의 공식 출시 정보에 계속해서 주의를 기울이는 것이 좋습니다.

질문 내용

이동 중에 웹어셈블리를 통해 http 서버를 사용해 보고 싶습니다. 내 생각에 go 1.20은 브라우저 외부에서 웹 어셈블리를 위한 go 컴파일을 지원하지 않으며 net/http 라이브러리도 Tinygo에 포함되어 있지 않습니다.

https://stackoverflow.com/a/76091829(@tachyonicbytes 덕분에)를 읽은 후 gotip 来完成此操作,但是每当我尝试启动服务器(或任何阻塞/等待功能)时,我都会收到错误: 致命错误:所有 goroutine 都在睡觉 - 死锁!를 사용해 보았습니다. 대기 함수를 사용하여 항목을 고루틴으로 이동하려고 시도했지만 단순히 함수가 종료되거나 동일한 오류가 발생합니다. 이것이 제가 실행하는 방법입니다:

으아악

다음은 예입니다. server.go:

으아악

그럼 이것은 단지 go 1.21이 wip이기 때문인가요, 차단 기능을 시작하는 올바른 방법을 이해할 수 없기 때문인가요, 아니면 go 1.21이 그런 기능을 지원하지 않기 때문인가요?

Intel Mac의 서버측 웹어셈블리 러너 wasm3에서 Go 서버를 시작하려고 합니다. http 서비스를 제공할 것으로 예상했지만 오류가 발생하거나 즉시 종료되는 것을 발견했습니다.

Solution

도움이 되어 다행입니다!

안타깝게도 wasm 네트워킹이 go 1.21의 일부가 될 것 같지는 않습니다. Wasm에서 네트워킹을 구현하는 것은 약간 복잡합니다. 코드를 실행하면 다음 줄이 표시됩니다.

으아악

검사 후에는 다음과 같은 면책 조항이 있습니다.

으아악

이 작업의 어려움은 wasi가 소켓에 대해 부분적인 지원만 제공하므로 wasi에는 아직 전체 버클리 소켓이 없다는 것입니다.

좋은 소식은 실제로 http를 할 수 있지만 Tinygo에서는 가능하다는 것입니다. Tinygo는 net/httpdriver를 통해 go 패키지를 부분적으로 지원합니다.

실용적인 사용법을 보고 싶다면 현재 Tinygo 프로젝트를 사용하여 this wasm으로 포팅하려고 합니다. 내 기억이 맞다면 제대로 작동하고 있지만 시간이 꽤 지났고 아직 변환이 완료되지 않았을 것입니다. 어쩌면 당분간은 불가능할 수도 있습니다.

또 다른 점은 wasm3 부분적인 wasi 구현이 있더라도 소켓 부분은 구현되지 않을 수 있습니다. @gedw99가 제안한 대로 wasmtime, wasmer, wasmedge 또는 wazero와 같은 다른 런타임도 사용하는 것이 좋습니다. wasmedge는 소켓을 훌륭하게 지원하지만 귀하의 경우에는 실제로 컴파일러가 문제입니다.

위 내용은 Go 1.21에는 WebAssembly를 통해 http를 호스팅하는 기능이 포함되나요? 어떻게?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿