Compare commits
	
		
			2 Commits
		
	
	
		
			2619cb9e06
			...
			6e6f8fb741
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 6e6f8fb741 | |||
| bdbdacd2a3 | 
							
								
								
									
										2
									
								
								.vscode/launch.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.vscode/launch.json
									
									
									
									
										vendored
									
									
								
							@ -9,7 +9,7 @@
 | 
				
			|||||||
            "type": "go",
 | 
					            "type": "go",
 | 
				
			||||||
            "request": "launch",
 | 
					            "request": "launch",
 | 
				
			||||||
            "mode": "auto",
 | 
					            "mode": "auto",
 | 
				
			||||||
            "program": "${workspaceFolder}/scripts/dev-server/devserver.go",
 | 
					            "program": "${workspaceFolder}/scripts/dev-server/",
 | 
				
			||||||
            "env": {
 | 
					            "env": {
 | 
				
			||||||
                "GOOS": "windows",
 | 
					                "GOOS": "windows",
 | 
				
			||||||
                "GOARCH": "amd64"
 | 
					                "GOARCH": "amd64"
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										2
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.mod
									
									
									
									
									
								
							@ -1,6 +1,6 @@
 | 
				
			|||||||
module git.d3nexus.de/Dadido3/D3vugu-components
 | 
					module git.d3nexus.de/Dadido3/D3vugu-components
 | 
				
			||||||
 | 
					
 | 
				
			||||||
go 1.20
 | 
					go 1.25
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require (
 | 
					require (
 | 
				
			||||||
	github.com/vugu/vgrouter v0.0.0-20200725205318-eeb478c42e5d
 | 
						github.com/vugu/vgrouter v0.0.0-20200725205318-eeb478c42e5d
 | 
				
			||||||
 | 
				
			|||||||
@ -16,11 +16,14 @@ func main() {
 | 
				
			|||||||
	simplehttp.DefaultStaticData["Title"] = "D3vugu-components examples"
 | 
						simplehttp.DefaultStaticData["Title"] = "D3vugu-components examples"
 | 
				
			||||||
	simplehttp.DefaultStaticData["CSSFiles"] = []string{"/static/css/d3c-theme-base.css"}
 | 
						simplehttp.DefaultStaticData["CSSFiles"] = []string{"/static/css/d3c-theme-base.css"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var wasmHandler WASMExecHandler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	wd, _ := os.Getwd()
 | 
						wd, _ := os.Getwd()
 | 
				
			||||||
	uiDir := filepath.Join(wd)
 | 
						uiDir := filepath.Join(wd)
 | 
				
			||||||
	l := ":8875"
 | 
						l := ":8875"
 | 
				
			||||||
	log.Printf("Starting HTTP Server at %q", l)
 | 
						log.Printf("Starting HTTP Server at %q", l)
 | 
				
			||||||
	h := simplehttp.New(uiDir, true)
 | 
						h := simplehttp.New(uiDir, true)
 | 
				
			||||||
 | 
						http.Handle("/wasm_exec.js", &wasmHandler) // A hack to circumvent the old hardcoded path in simplehttp. TODO: Seek alternative to the simplehttp dev server
 | 
				
			||||||
	http.Handle("/", h)
 | 
						http.Handle("/", h)
 | 
				
			||||||
	http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir(filepath.Join(uiDir, "static")))))
 | 
						http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir(filepath.Join(uiDir, "static")))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										43
									
								
								scripts/dev-server/wasm-exec-handler.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								scripts/dev-server/wasm-exec-handler.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,43 @@
 | 
				
			|||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"bytes"
 | 
				
			||||||
 | 
						"net/http"
 | 
				
			||||||
 | 
						"os"
 | 
				
			||||||
 | 
						"os/exec"
 | 
				
			||||||
 | 
						"path/filepath"
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
 | 
						"sync"
 | 
				
			||||||
 | 
						"time"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type WASMExecHandler struct {
 | 
				
			||||||
 | 
						wasmExecJsOnce    sync.Once
 | 
				
			||||||
 | 
						wasmExecJsContent []byte
 | 
				
			||||||
 | 
						wasmExecJsTs      time.Time
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (h *WASMExecHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
 | 
						b, err := exec.Command("go", "env", "GOROOT").CombinedOutput()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							http.Error(w, "failed to run `go env GOROOT`: "+err.Error(), 500)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						h.wasmExecJsOnce.Do(func() {
 | 
				
			||||||
 | 
							h.wasmExecJsContent, err = os.ReadFile(filepath.Join(strings.TrimSpace(string(b)), "lib/wasm/wasm_exec.js"))
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								http.Error(w, "failed to run `go env GOROOT`: "+err.Error(), 500)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							h.wasmExecJsTs = time.Now() // hack but whatever for now
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if len(h.wasmExecJsContent) == 0 {
 | 
				
			||||||
 | 
							http.Error(w, "failed to read wasm_exec.js from local Go environment", 500)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						w.Header().Set("Content-Type", "text/javascript")
 | 
				
			||||||
 | 
						http.ServeContent(w, r, "/wasm_exec.js", h.wasmExecJsTs, bytes.NewReader(h.wasmExecJsContent))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user