Skip to content

Commit d576fe6

Browse files
committed
Get wasm grpc port and hostname at runtime
1 parent 79acd36 commit d576fe6

File tree

4 files changed

+31
-7
lines changed

4 files changed

+31
-7
lines changed

‎mlp-ea-decentralized/common/ga/poolModel.go‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,11 @@ func (pool *PoolModel) handleEvaluate() {
347347

348348
// Setup HTTP listener to serve webs
349349
Log.Infof("Web Server for bowser collaborators at http://%s:%d/", listenAddr, wasmPort)
350-
go http.ListenAndServe(fmt.Sprintf("%s:%d", listenAddr, webPort), http.FileServer(http.Dir(pool.WebPath)))
350+
http.Handle("/", http.FileServer(http.Dir(pool.WebPath)))
351+
http.HandleFunc("/grpcPortWS", func(w http.ResponseWriter, r *http.Request) {
352+
fmt.Fprintf(w, "%d", wasmPort)
353+
})
354+
go http.ListenAndServe(fmt.Sprintf("%s:%d", listenAddr, webPort), nil)
351355

352356
// Setup listener for wasm clients based on websockets
353357
lisWasm, err := ws.Listen(fmt.Sprintf("ws://%s:%d", listenAddr, wasmPort), nil)

‎mlp-ea-decentralized/web/src/go/main.go‎

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package main
22

33
import (
4+
"fmt"
5+
"io/ioutil"
46
"log"
57
"net"
8+
"net/http"
9+
"syscall/js"
610
"time"
711

812
"github.com/dennwc/dom/net/ws"
@@ -15,27 +19,39 @@ import (
1519
func main() {
1620
log.SetOutput(WebLogger{})
1721

18-
logger := WebLogger{}
22+
// Ask for served grpc port
23+
resp, err := http.Get("/grpcPortWS")
24+
if err != nil {
25+
log.Fatalf("Could not ask for grpcPort. %s", err.Error())
26+
}
27+
body, err := ioutil.ReadAll(resp.Body)
28+
if err != nil {
29+
log.Fatalf("Could not read Body. %s", err.Error())
30+
}
1931

2032
client := ga.Client{
21-
ServerAddr: "ws://127.0.0.1:2019",
22-
ID: "clientWasm",
23-
Log: logrus.New(),
24-
Delegate: mlp.DelegateImpl{},
33+
ID: "clientWasm",
34+
Log: logrus.New(),
35+
Delegate: mlp.DelegateImpl{},
2536

2637
// Use WebSockets
2738
CustomDialer: func(s string, dt time.Duration) (net.Conn, error) {
2839
return ws.Dial(s)
2940
},
3041
}
3142

43+
logger := WebLogger{}
3244
logrus.SetOutput(logger)
3345
logrus.SetLevel(logrus.ErrorLevel)
3446
client.Log.SetOutput(logger)
3547
client.Log.SetLevel(logrus.InfoLevel)
3648
client.Log.SetFormatter(&logrus.JSONFormatter{})
3749

38-
err := client.Start()
50+
host := js.Global().Call("GetHostName")
51+
client.Log.Infof("Hostname: %s", host.String())
52+
client.ServerAddr = fmt.Sprintf("ws://%s:%s", host.String(), string(body))
53+
54+
err = client.Start()
3955
if err != nil {
4056
client.Log.Fatalf("Got error from client: %s", err.Error())
4157
}
82.7 KB
Binary file not shown.

‎mlp-ea-decentralized/web/src/worker.js‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
importScripts("wasm_exec.js")
22

3+
function GetHostName() {
4+
return self.location.hostname
5+
}
6+
37
if (!WebAssembly.instantiateStreaming) { // polyfill
48
WebAssembly.instantiateStreaming = async (resp, importObject) => {
59
const source = await (await resp).arrayBuffer();

0 commit comments

Comments
 (0)