Skip to content

Commit

Permalink
Merge pull request #91 from syumai/init-go-instance-on-request
Browse files Browse the repository at this point in the history
init Go instance on request
  • Loading branch information
syumai committed Jan 24, 2024
2 parents 90acb28 + 9810f12 commit 1519718
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 6 deletions.
4 changes: 2 additions & 2 deletions cmd/workers-assets-gen/assets/common/shim.mjs
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import "./wasm_exec.js";
import { connect } from 'cloudflare:sockets';

const go = new Go();

let mod;

globalThis.tryCatch = (fn) => {
Expand All @@ -22,6 +20,8 @@ export function init(m) {
}

async function run(ctx) {
const go = new Go();

let ready;
const readyPromise = new Promise((resolve) => {
ready = resolve;
Expand Down
20 changes: 17 additions & 3 deletions handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,10 @@ import (
"github.com/syumai/workers/internal/runtimecontext"
)

var httpHandler http.Handler
var (
httpHandler http.Handler
closeCh = make(chan struct{})
)

func init() {
var handleRequestCallback js.Func
Expand Down Expand Up @@ -40,6 +43,15 @@ func init() {
jsutil.Binding.Set("handleRequest", handleRequestCallback)
}

type appCloser struct {
io.ReadCloser
}

func (c *appCloser) Close() error {
defer close(closeCh)
return c.ReadCloser.Close()
}

// handleRequest accepts a Request object and returns Response object.
func handleRequest(reqObj js.Value, runtimeCtxObj js.Value) (js.Value, error) {
if httpHandler == nil {
Expand All @@ -55,7 +67,7 @@ func handleRequest(reqObj js.Value, runtimeCtxObj js.Value) (js.Value, error) {
w := &jshttp.ResponseWriter{
HeaderValue: http.Header{},
StatusCode: http.StatusOK,
Reader: reader,
Reader: &appCloser{reader},
Writer: writer,
ReadyCh: make(chan struct{}),
}
Expand All @@ -79,5 +91,7 @@ func Serve(handler http.Handler) {
}
httpHandler = handler
ready()
select {}
select {
case <-closeCh:
}
}
2 changes: 1 addition & 1 deletion internal/jshttp/responsewriter.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
type ResponseWriter struct {
HeaderValue http.Header
StatusCode int
Reader *io.PipeReader
Reader io.ReadCloser
Writer *io.PipeWriter
ReadyCh chan struct{}
Once sync.Once
Expand Down

0 comments on commit 1519718

Please sign in to comment.