golang jsonrpc

前端之家收集整理的这篇文章主要介绍了golang jsonrpc前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. package main
  2.  
  3. import (
  4. "github.com/streadway/amqp"
  5. "log"
  6. "net"
  7. "net/rpc"
  8. "net/rpc/jsonrpc"
  9. "os"
  10. "time"
  11. )
  12.  
  13. type MPMsg struct {
  14. }
  15.  
  16. func (mpMsg *MPMsg) Handle(args *map[string]interface{},reply *map[string]interface{}) error {
  17. *reply = map[string]interface{}{}
  18. return nil
  19. }
  20.  
  21. func main() {
  22. lf,_ := os.OpenFile("/var/log/"+time.Now().Format("2006-01-02T15:04:05")+".log",os.O_APPEND|os.O_CREATE|os.O_RDWR,0666)
  23. defer lf.Close()
  24. log.SetOutput(lf)
  25.  
  26. mpMsg := new(MPMsg)
  27. rpc.Register(mpMsg)
  28.  
  29. addr,_ := net.ResolveTCPAddr("tcp",":135")
  30. ln,e := net.ListenTCP("tcp",addr)
  31. if e != nil {
  32. panic(e)
  33. }
  34. for {
  35. conn,e := ln.Accept()
  36. if e != nil {
  37. continue
  38. }
  39. go jsonrpc.ServeConn(conn)
  40. }
  41. }



  1. // RPC calls.
  2. rpcClient,e := jsonrpc.Dial("tcp","2d1c07f4-8d2d-11e5-bf81-54ee755d5aba:135")
  3. if e != nil {
  4. log.Println("Error dail rpc server:",e)
  5. http.Error(w,e.Error(),http.StatusInternalServerError)
  6. return
  7. }
  8. var reply map[string]interface{}
  9. e = rpcClient.Call("MPMsg.Handle",msg,&reply)
  10. if e != nil {
  11. log.Println("Error call rpc method:",http.StatusInternalServerError)
  12. return
  13. }

猜你在找的Go相关文章