Example #1
0
func NewServe(output bool) *nc.SocketServer {
	var s *nc.SocketServer
	r := func(conn net.Conn, b []byte) ([]byte, error) {
		cmd := string(b)
		id, ok := s.GetCli(conn)
		if !ok {
			// not join,auth first!
			if err := connAuth(s, conn, cmd); err != nil {
				return nil, err
			}
			return []byte("ok"), nil
		}
		if strings.HasPrefix(cmd, "MAUTH:") {
			//auth member
			return memberAuth(s, id, cmd[6:])
		}
		return handleCommand(s, id, cmd)
	}

	s = nc.NewSocketServer(r)
	s.ReadDeadLine = defaultReadDeadLine
	if !output {
		s.OutputOff()
	}
	return s
}