mirror of
https://github.com/nlepage/go-wasm-http-server.git
synced 2026-01-12 01:59:14 +00:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3cf36c41e2 | ||
|
|
30a6ef67f9 | ||
|
|
669f82020d | ||
|
|
c94dcd965d | ||
|
|
2d786bdb14 |
@@ -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.3/sw.js')
|
||||
importScripts('https://cdn.jsdelivr.net/gh/nlepage/go-wasm-http-server@v2.0.5/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.3/sw.js')
|
||||
importScripts('https://cdn.jsdelivr.net/gh/nlepage/go-wasm-http-server@v2.0.5/sw.js')
|
||||
|
||||
const wasm = 'api.wasm'
|
||||
|
||||
|
||||
@@ -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.3/sw.js')
|
||||
importScripts('https://cdn.jsdelivr.net/gh/nlepage/go-wasm-http-server@v2.0.5/sw.js')
|
||||
|
||||
const wasm = 'api.wasm'
|
||||
|
||||
|
||||
@@ -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.3/sw.js')
|
||||
importScripts('https://cdn.jsdelivr.net/gh/nlepage/go-wasm-http-server@v2.0.5/sw.js')
|
||||
|
||||
const wasm = 'api.wasm'
|
||||
|
||||
|
||||
@@ -12,11 +12,14 @@ type Writer struct {
|
||||
Value safejs.Value
|
||||
controller safejs.Value
|
||||
ctx context.Context
|
||||
cancelled bool
|
||||
}
|
||||
|
||||
var _ io.WriteCloser = (*Writer)(nil)
|
||||
|
||||
func NewWriter() (*Writer, error) {
|
||||
var rs *Writer
|
||||
|
||||
var start safejs.Func
|
||||
var controller safejs.Value
|
||||
|
||||
@@ -34,6 +37,7 @@ func NewWriter() (*Writer, error) {
|
||||
|
||||
cancel, err = safejs.FuncOf(func(_ safejs.Value, _ []safejs.Value) any {
|
||||
defer cancel.Release()
|
||||
rs.cancelled = true
|
||||
cancelCtx()
|
||||
return nil
|
||||
})
|
||||
@@ -54,14 +58,20 @@ func NewWriter() (*Writer, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &Writer{
|
||||
rs = &Writer{
|
||||
Value: value,
|
||||
controller: controller,
|
||||
ctx: ctx,
|
||||
}, nil
|
||||
}
|
||||
|
||||
return rs, nil
|
||||
}
|
||||
|
||||
func (rs *Writer) Write(b []byte) (int, error) {
|
||||
if rs.cancelled {
|
||||
return 0, nil
|
||||
}
|
||||
|
||||
chunk, err := jstype.Uint8Array.New(len(b)) // FIXME reuse same Uint8Array?
|
||||
if err != nil {
|
||||
return 0, err
|
||||
@@ -78,6 +88,10 @@ func (rs *Writer) Write(b []byte) (int, error) {
|
||||
}
|
||||
|
||||
func (rs *Writer) Close() error {
|
||||
if rs.cancelled {
|
||||
return nil
|
||||
}
|
||||
|
||||
_, err := rs.controller.Call("close")
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user