Usage:
func MyCliFunc(cli *wsrpc.ClientCtx) {
cli.Define("btn1.click", func(param ...interface{}) interface{} { // Define a remote interface so javascript client can call
log.Println("Async button clicked")
return "ok"
})
ret := cli.Call("Hello", wsrpc.DataObj{
"couldbe": "interface",
})
t := <-ret
log.Println("Response:", t)
}
func main() {
var mux = http.NewServeMux()
wsrpc.RegisterTo(mux, MyCliFunc) // Client websocket handler, this registers also the JS library
mux.HandleFunc("/", webGenerated.AssetHandleFunc)
log.Println("Listening :8080")
http.ListenAndServe(":8080", mux)
}
Client side:
wsrpc = new WsRpc();
wsrpc.connect("ws://"+location.host +"/wsrpc");
obj = {
Hello: function(response,param) {
console.log("Hello world")
response({ok:"OK"})
}
}
wsrpc.export(obj)
btn = document.querySelector("#btn1")
btn.addEventListener("click",function(){
console.log("Button clicked")
wsrpc.call("btn1.click",{"hello":"ok"}, (res) =>{ // Will call server defined procedure
console.log("Answered:",res );
})
})