github.com/isyscore/isc-gobase@v1.5.3-0.20231218061332-cbc7451899e9/jsonrpc/server.go (about) 1 package jsonrpc 2 3 import ( 4 "net" 5 "net/rpc" 6 "net/rpc/jsonrpc" 7 ) 8 9 type Server struct { 10 link net.Listener 11 } 12 13 func (s *Server) Register(v any) error { 14 return rpc.Register(v) 15 } 16 17 func (s *Server) Listen(address string) error { 18 var err error 19 s.link, err = net.Listen("tcp", address) 20 if err != nil { 21 return err 22 } 23 go func() { 24 for { 25 if conn, err := s.link.Accept(); err == nil { 26 go jsonrpc.ServeConn(conn) 27 } 28 } 29 }() 30 return nil 31 } 32 33 func (s *Server) Close() { 34 _ = s.link.Close() 35 }