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  }