mirror of
https://github.com/nlepage/go-wasm-http-server.git
synced 2026-01-12 01:59:14 +00:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
770d49a106 | ||
|
|
e8555180f7 | ||
|
|
8abad8cb77 | ||
|
|
74cbaf89b5 |
@@ -97,7 +97,7 @@ Create a ServiceWorker file with the following code:
|
||||
📄 `sw.js`
|
||||
```js
|
||||
importScripts('https://cdn.jsdelivr.net/gh/golang/go@go1.18.4/misc/wasm/wasm_exec.js')
|
||||
importScripts('https://cdn.jsdelivr.net/gh/nlepage/go-wasm-http-server@v2.0.0/sw.js')
|
||||
importScripts('https://cdn.jsdelivr.net/gh/nlepage/go-wasm-http-server@v2.0.2/sw.js')
|
||||
|
||||
registerWasmHTTPListener('path/to/server.wasm')
|
||||
```
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
importScripts('https://cdn.jsdelivr.net/gh/golang/go@go1.23.1/misc/wasm/wasm_exec.js')
|
||||
importScripts('https://cdn.jsdelivr.net/gh/nlepage/go-wasm-http-server@v2.0.0/sw.js')
|
||||
importScripts('https://cdn.jsdelivr.net/gh/nlepage/go-wasm-http-server@v2.0.2/sw.js')
|
||||
|
||||
addEventListener('install', (event) => {
|
||||
event.waitUntil(skipWaiting())
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
importScripts('https://cdn.jsdelivr.net/gh/golang/go@go1.23.1/misc/wasm/wasm_exec.js')
|
||||
importScripts('https://cdn.jsdelivr.net/gh/nlepage/go-wasm-http-server@v2.0.0/sw.js')
|
||||
importScripts('https://cdn.jsdelivr.net/gh/nlepage/go-wasm-http-server@v2.0.2/sw.js')
|
||||
|
||||
addEventListener('install', event => {
|
||||
event.waitUntil(skipWaiting())
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
importScripts('https://cdn.jsdelivr.net/gh/golang/go@go1.23.1/misc/wasm/wasm_exec.js')
|
||||
importScripts('https://cdn.jsdelivr.net/gh/nlepage/go-wasm-http-server@v2.0.0/sw.js')
|
||||
importScripts('https://cdn.jsdelivr.net/gh/nlepage/go-wasm-http-server@v2.0.2/sw.js')
|
||||
|
||||
addEventListener('install', (event) => {
|
||||
event.waitUntil(skipWaiting())
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
importScripts('https://cdn.jsdelivr.net/gh/golang/go@go1.23.1/misc/wasm/wasm_exec.js')
|
||||
importScripts('https://cdn.jsdelivr.net/gh/nlepage/go-wasm-http-server@v2.0.0/sw.js')
|
||||
importScripts('https://cdn.jsdelivr.net/gh/nlepage/go-wasm-http-server@v2.0.2/sw.js')
|
||||
|
||||
addEventListener('install', (event) => {
|
||||
event.waitUntil(skipWaiting())
|
||||
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
wasmhttp "github.com/nlepage/go-wasm-http-server/v2/v2"
|
||||
wasmhttp "github.com/nlepage/go-wasm-http-server/v2"
|
||||
)
|
||||
|
||||
// Demonstrates a simple hello JSON service.
|
||||
|
||||
@@ -73,6 +73,14 @@ func (v Value) IndexString(i int) (string, error) {
|
||||
return safejs.Value(sv).String()
|
||||
}
|
||||
|
||||
func (v Value) IsNull() bool {
|
||||
return safejs.Value(v).IsNull()
|
||||
}
|
||||
|
||||
func (v Value) IsUndefined() bool {
|
||||
return safejs.Value(v).IsUndefined()
|
||||
}
|
||||
|
||||
func (v Value) New(args ...any) (Value, error) {
|
||||
args = toJSValue(args).([]any)
|
||||
r, err := safejs.Value(v).New(args...)
|
||||
|
||||
28
request.go
28
request.go
@@ -1,6 +1,7 @@
|
||||
package wasmhttp
|
||||
|
||||
import (
|
||||
"io"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"syscall/js"
|
||||
@@ -13,16 +14,6 @@ import (
|
||||
func Request(uvalue js.Value) (*http.Request, error) {
|
||||
value := safejs.Safe(uvalue)
|
||||
|
||||
body, err := value.Get("body")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
r, err := body.Call("getReader")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
method, err := value.GetString("method")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -33,10 +24,25 @@ func Request(uvalue js.Value) (*http.Request, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
body, err := value.Get("body")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var bodyReader io.Reader
|
||||
if !body.IsUndefined() && !body.IsNull() {
|
||||
r, err := body.Call("getReader")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
bodyReader = readablestream.NewReader(r)
|
||||
}
|
||||
|
||||
req := httptest.NewRequest(
|
||||
method,
|
||||
url,
|
||||
readablestream.NewReader(r),
|
||||
bodyReader,
|
||||
)
|
||||
|
||||
headers, err := value.Get("headers")
|
||||
|
||||
@@ -88,7 +88,7 @@ func (r *response) WriteHeader(code int) {
|
||||
checkWriteHeaderCode(code)
|
||||
|
||||
init, err := safejs.ValueOf(map[string]any{
|
||||
"code": code,
|
||||
"status": code,
|
||||
"headers": r.headerValue(),
|
||||
})
|
||||
if err != nil {
|
||||
|
||||
10
serve.go
10
serve.go
@@ -57,19 +57,13 @@ func Serve(handler http.Handler) (func(), error) {
|
||||
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
var errStr string
|
||||
if err, ok := r.(error); ok {
|
||||
errStr = err.Error()
|
||||
} else {
|
||||
errStr = fmt.Sprintf("%s", r)
|
||||
}
|
||||
res.WriteError(errStr)
|
||||
res.WriteError(fmt.Sprintf("%+v", r))
|
||||
}
|
||||
}()
|
||||
|
||||
req, err := Request(safejs.Unsafe(args[0]))
|
||||
if err != nil {
|
||||
res.WriteError(err.Error())
|
||||
res.WriteError(fmt.Sprintf("%+v", err))
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user