I'm trying to use the Gorilla/rpc
package to set up a RPC to receive a request and reply with a response (obviously).
First I'm trying with the example provided with Gorilla/rpc
Here's my code:
type HelloArgs struct {
Who string
}
type HelloReply struct {
Message string
}
type HelloService struct{}
func (h *HelloService) Say(r *http.Request, args *HelloArgs, reply *HelloReply) error {
reply.Message = "Hello, " + args.Who + "!"
return nil
}
func main() {
r := mux.NewRouter()
jsonRPC := rpc.NewServer()
jsonCodec := json.NewCodec()
jsonRPC.RegisterCodec(jsonCodec, "application/json")
jsonRPC.RegisterCodec(jsonCodec, "application/json; charset=UTF-8") // For firefox 11 and other browsers which append the charset=UTF-8
jsonRPC.RegisterService(new(HelloService), "")
r.Handle("/api", jsonRPC)
http.ListenAndServe(":"+port, nil)
}
I have a couple of issues:
I'm not sure how I would set a
Access-Control-Allow-Origin
header like I normally would on ahttp.ResponseWriter
(with a regular webserver) for cross domain requests, as this doesn't take ahttp.ResponseWriter
as an argument.What would I actually send to access the
HelloService.Say
method? I've tried{ method: "HelloService.Say", params:[{Who: "Me"}]}
but I get405 (Method Not Allowed)
(not sure if this is because I can't make x-domain requests though?)
Any insight greatly appreciated.