本文整理汇总了Golang中github.com/codegangsta/negroni.NewStatic函数的典型用法代码示例。如果您正苦于以下问题:Golang NewStatic函数的具体用法?Golang NewStatic怎么用?Golang NewStatic使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewStatic函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: main
func main() {
c, err := myrpc.Dial("tcp", checkEnv("VEIL_LISTENER"))
check(err)
h := handlers.New(&handlers.H{C: c})
r := mux.NewRouter()
r.HandleFunc("/api/version", h.Version).Methods("GET")
r.HandleFunc("/api/payloads", h.Payloads).Methods("GET")
r.HandleFunc("/api/options", h.PayloadOptions).Methods("GET")
r.HandleFunc("/api/generate", h.Generate).Methods("POST")
n := negroni.New()
n.Use(negroni.NewLogger())
n.Use(negroni.NewRecovery())
n.Use(negroni.NewStatic(http.Dir(checkEnv("VEIL_OUTPUT_DIR"))))
n.Use(auth.Basic(checkEnv("ADMIN_USER"), checkEnv("ADMIN_PASS")))
n.Use(negroni.NewStatic(http.Dir("public")))
n.Use(negroni.HandlerFunc(func(w http.ResponseWriter, req *http.Request, next http.HandlerFunc) {
if req.Method != "POST" {
next(w, req)
return
}
if !strings.Contains(req.Header.Get("content-type"), "application/json") {
h.JSON400(w, errors.New("Content-Type must be application/json"))
return
}
next(w, req)
}))
n.UseHandler(r)
n.Run(checkEnv("SERVER_LISTENER"))
}
开发者ID:johnjohnsp1,项目名称:veil-evasion-api,代码行数:29,代码来源:main.go
示例2: main
func main() {
router := mux.NewRouter()
router.HandleFunc(xmlEndpoint+"/alerts", func(res http.ResponseWriter, req *http.Request) {
res.Header().Set("Access-Control-Allow-Origin", "*")
}).Methods("OPTIONS")
//router.HandleFunc(xmlEndpoint+"/alerts", alertPost).Methods("POST")
//router.HandleFunc(xmlEndpoint+"/alerts", alertsGet).Methods("GET")
router.HandleFunc(xmlEndpoint+"/alerts/{id}", alertGet).Methods("GET")
router.HandleFunc(jsonEndpoint+"/alerts", alertPostJson).Methods("POST")
router.HandleFunc(jsonEndpoint+"/alerts", alertsGetJson).Methods("GET")
router.HandleFunc(jsonEndpoint+"/alerts/{id}", alertGetJson).Methods("GET")
// router.HandleFunc("/alerts/{id}", alertPost).Methods("POST")
router.HandleFunc(xmlEndpoint+"/feed", getAtomFeed)
//router.HandleFunc("/mdc", DrgHandler).Methods("GET")
// router.HandleFunc("/", HomeHandler)
n := negroni.New(negroni.NewRecovery(), NewLogger(), negroni.NewStatic(http.Dir("dist")))
n.UseHandler(router)
n.Run(qcapListen)
}
开发者ID:pierreprinetti,项目名称:qcap-web,代码行数:25,代码来源:qcap-web.go
示例3: newServer
func newServer() *http.Server {
n := negroni.New()
// Middlewares
if Settings["environments"].GetBool("log") {
n.Use(negroni.NewLogger())
}
n.UseFunc(recovery())
n.Use(negroni.NewStatic(http.Dir("./public")))
// Setup routes
router := pat.New()
router.Get("/api/v1/:env/driver/:ID", http.HandlerFunc(getDriverLocation))
//router.Post("/api/v1/<resource>", http.HandlerFunc(/*handle func*/))
// Add alive endpoint
// router.Get("/alive", http.HandlerFunc(alive))
// Add the router action
n.UseHandler(router)
Server := &http.Server{
Addr: ":" + Settings["environments"].GetString("server.port"),
Handler: n,
ReadTimeout: 5 * time.Second,
WriteTimeout: 5 * time.Second,
MaxHeaderBytes: 1 << 20,
}
return Server
}
开发者ID:idoch,项目名称:driver_location_history,代码行数:29,代码来源:server.go
示例4: NewApp
// This function is called from main.go and from the tests
// to create a new application.
func NewApp(root string) *App {
CheckEnv()
// Use negroni for middleware
ne := negroni.New()
// Use gorilla/mux for routing
ro := mux.NewRouter()
// Use Render for template. Pass in path to templates folder
// as well as asset helper functions.
re := render.New(render.Options{
Directory: filepath.Join(root, "templates"),
Layout: "layouts/layout",
Extensions: []string{".html"},
Funcs: []template.FuncMap{AssetHelpers(root)},
})
// Establish connection to DB as specificed in database.go
db := NewDB()
// Add middleware to the stack
ne.Use(negroni.NewRecovery())
ne.Use(negroni.NewLogger())
ne.Use(NewAssetHeaders())
ne.Use(negroni.NewStatic(http.Dir("public")))
ne.UseHandler(ro)
// Return a new App struct with all these things.
return &App{ne, ro, re, db}
}
开发者ID:ramigg,项目名称:ok-go,代码行数:34,代码来源:app.go
示例5: serverRun
func serverRun(cmd *cobra.Command, args []string) {
// MongoDB setup
CreateUniqueIndexes()
// Web Server Setup
CreateStore()
webRouter := CreateWebRouter()
teamRouter := CreateTeamRouter()
app := negroni.New()
webRouter.PathPrefix("/").Handler(negroni.New(
negroni.HandlerFunc(RequireLogin),
negroni.Wrap(teamRouter),
))
app.Use(negroni.NewLogger())
app.Use(negroni.NewStatic(http.Dir("static")))
app.Use(negroni.HandlerFunc(CheckSessionID))
app.UseHandler(webRouter)
l := log.New(os.Stdout, "[negroni] ", 0)
http_port := viper.GetString("server.http_port")
https_port := viper.GetString("server.https_port")
cert := viper.GetString("server.cert")
key := viper.GetString("server.key")
l.Printf("Server running at: https://%s:%s", viper.GetString("server.ip"), https_port)
go http.ListenAndServe(":"+http_port, http.HandlerFunc(redir))
l.Fatal(http.ListenAndServeTLS(":"+https_port, cert, key, app))
}
开发者ID:pereztr5,项目名称:cyboard,代码行数:31,代码来源:server.go
示例6: main
func main() {
cfg.MustLoad()
listeningAddr := ":" + cfg.Server.Port
router := mux.NewRouter().PathPrefix(cfg.Server.API.Prefix).Subrouter()
db, err := pg.NewSession(cfg.DB.ConnectionURL())
if err != nil {
log.Fatalf("Unable to connect to database: %s", err)
}
vars := map[string]interface{}{"db": db}
err = ctx.Init(router, cfg.Server.API.PrivKey, cfg.Server.API.PubKey, vars)
if err != nil {
log.Fatalf("Unable to configure API: %s", err)
}
server := negroni.New(
negroni.NewRecovery(),
negroni.HandlerFunc(WebLogger),
negroni.NewStatic(http.Dir(cfg.Server.Frontend.Path)),
)
server.UseHandler(router)
log.Infof("Listening on address: %s", listeningAddr)
log.Fatal(http.ListenAndServe(listeningAddr, server))
}
开发者ID:thiennt,项目名称:go-spa,代码行数:28,代码来源:main.go
示例7: StartServer
func StartServer() {
rest.P()
// Log to file
f, err := os.OpenFile("logs/arkeogis.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
log.Fatalf("Error opening log file: %v", err)
}
defer f.Close()
log.SetOutput(f)
// Configure Negroni and start server
Negroni := negroni.New(
negroni.NewRecovery(),
negroni.HandlerFunc(crossDomainMiddleware),
NewLogger(),
negroni.NewStatic(http.Dir(config.WebPath)),
)
Negroni.UseHandler(routes.MuxRouter)
/* DEBUG SENDING MAIL
fmt.Println("SENDING MAIL")
errrr := mail.Send([]string{"[email protected]"}, "pouet", "poeut", "fr")
if errrr != nil {
log.Println(errors.ErrorStack(errrr))
}
fmt.Println("starting web server...")
*/
Negroni.Run(":" + strconv.Itoa(config.Main.Server.Port))
}
开发者ID:croll,项目名称:arkeogis-server,代码行数:27,代码来源:webserver.go
示例8: configureHttpAndListen
func configureHttpAndListen(config *AppConfig, db gorm.DB) {
// register routes
r := render.New(render.Options{})
h := DBHandler{db: &db, r: r}
router := mux.NewRouter()
router.HandleFunc("/api/schedules", h.schedulesIndexHandler).Methods("GET")
router.HandleFunc("/api/schedules", h.scheduleCreateHandler).Methods("POST")
router.HandleFunc("/api/schedules/{id:[0-9]+}", h.scheduleShowHandler).Methods("GET")
router.HandleFunc("/api/schedules/{id:[0-9]+}", h.scheduleUpdateHandler).Methods("PUT", "PATCH")
router.HandleFunc("/api/schedules/{id:[0-9]+}", h.scheduleDeleteHandler).Methods("DELETE")
router.HandleFunc("/api/cards", h.cardsIndexHandler).Methods("GET")
router.HandleFunc("/api/cards", h.cardCreateHandler).Methods("POST")
router.HandleFunc("/api/cards/{id:[0-9]+}", h.cardShowHandler).Methods("GET")
router.HandleFunc("/api/cards/{id:[0-9]+}", h.cardUpdateHandler).Methods("PUT", "PATCH")
router.HandleFunc("/api/cards/{id:[0-9]+}", h.cardDeleteHandler).Methods("DELETE")
router.HandleFunc("/api/logs", h.logsIndexHandler).Methods("GET")
n := negroni.New(
negroni.NewRecovery(),
negroni.NewStatic(http.Dir(config.AssetPath)),
)
n.Use(auth.Basic(config.Authentication.Username, config.Authentication.Password))
n.UseHandler(router)
n.Run(":" + config.Port)
}
开发者ID:buffalolabinc,项目名称:goking,代码行数:30,代码来源:goking.go
示例9: NewApp
func NewApp() *App {
db := newDB()
// Use negroni for middleware
ne := negroni.New(
negroni.NewRecovery(),
negroni.NewLogger(),
negroni.NewStatic(http.Dir("public")),
)
// Use gorilla/mux for routing
ro := mux.NewRouter()
// Set StrictSlash to allow /things/ to automatically redirect to /things
ro.StrictSlash(true)
// Use Render for template. Pass in path to templates folder
// as well as asset helper functions.
re := render.New(render.Options{
Layout: "layouts/layout",
Extensions: []string{".html"},
})
ne.UseHandler(ro)
return &App{ne, ro, re, db}
}
开发者ID:sklise,项目名称:inventory,代码行数:27,代码来源:config.go
示例10: main
func main() {
conf.Parse()
restrict.ReadCryptoKey("keys/app.rsa")
router := mux.NewRouter()
router.HandleFunc("/users", GetUserHandler).Methods("GET")
router.HandleFunc("/users/login", LoginHandler).Methods("POST")
router.HandleFunc("/users/register", RegisterHandler).Methods("POST")
router.HandleFunc("/classes", restrict.R(CreateClassHandler)).Methods("POST")
router.HandleFunc("/classes", restrict.R(GetClassesHandler)).Methods("GET")
router.HandleFunc("/classes/{class_id}/workshops", restrict.R(CreateWorkshopHandler)).Methods("POST")
router.HandleFunc("/classes/{class_id}/workshops/{workshop_id}/pages", restrict.R(CreateWorkshopPageHandler)).Methods("POST")
router.HandleFunc("/classes/{class_id}/workshops/{workshop_id}/pages", restrict.R(GetWorkshopPagesHandler)).Methods("GET")
router.HandleFunc("/classes/{class_id}/workshops/{workshop_id}/pages/{page_id}/edit", restrict.R(EditPageHandler)).Methods("POST")
router.HandleFunc("/classes/{class_id}/workshops/{workshop_id}", restrict.R(GetWorkshopHandler)).Methods("GET")
router.HandleFunc("/classes/{class_id}/workshops/{workshop_id}", restrict.R(EditWorkshopHandler)).Methods("PUT")
router.HandleFunc("/classes/{class_id}/workshops/{workshop_id}", restrict.R(DeleteWorkshopHandler)).Methods("DELETE")
router.HandleFunc("/classes/{class_id}/workshops", restrict.R(GetWorkshopsHandler)).Methods("GET")
router.HandleFunc("/classes/{class_id}/students", restrict.R(GetStudentHandler)).Methods("GET")
router.HandleFunc("/classes/{class_id}/image", restrict.R(SetClassImageHandler)).Methods("POST")
router.HandleFunc("/classes/{class_id}/admin/students", restrict.R(AddUserToClassHandler)).Methods("POST")
n := negroni.New()
n.Use(negroni.NewStatic(http.Dir("static")))
n.Use(negroni.NewLogger())
n.UseHandler(router)
models.InitDB(*dbFile)
http.ListenAndServe("localhost:8080", n)
}
开发者ID:paked,项目名称:steel,代码行数:32,代码来源:server.go
示例11: main
func main() {
settings := evergreen.GetSettingsOrExit()
if settings.Ui.LogFile != "" {
evergreen.SetLogger(settings.Ui.LogFile)
}
db.SetGlobalSessionProvider(db.SessionFactoryFromConfig(settings))
home := evergreen.FindEvergreenHome()
userManager, err := auth.LoadUserManager(settings.AuthConfig)
if err != nil {
fmt.Println("Failed to create user manager:", err)
os.Exit(1)
}
cookieStore := sessions.NewCookieStore([]byte(settings.Ui.Secret))
uis := ui.UIServer{
nil, // render
settings.Ui.Url, // RootURL
userManager, // User Manager
*settings, // mci settings
cookieStore, // cookiestore
nil, // plugin panel manager
}
router, err := uis.NewRouter()
if err != nil {
fmt.Println("Failed to create router:", err)
os.Exit(1)
}
webHome := filepath.Join(home, "public")
functionOptions := ui.FuncOptions{webHome, settings.Ui.HelpUrl, true, router}
functions, err := ui.MakeTemplateFuncs(functionOptions, settings.SuperUsers)
if err != nil {
fmt.Println("Failed to create template function map:", err)
os.Exit(1)
}
uis.Render = render.New(render.Options{
Directory: filepath.Join(home, ui.WebRootPath, ui.Templates),
DisableCache: !settings.Ui.CacheTemplates,
Funcs: functions,
})
err = uis.InitPlugins()
if err != nil {
fmt.Println("WARNING: Error initializing plugins:", err)
}
n := negroni.New()
n.Use(negroni.NewStatic(http.Dir(webHome)))
n.Use(ui.NewLogger())
n.Use(negroni.HandlerFunc(ui.UserMiddleware(userManager)))
n.UseHandler(router)
graceful.Run(settings.Ui.HttpListenAddr, requestTimeout, n)
evergreen.Logger.Logf(slogger.INFO, "UI server cleanly terminated")
}
开发者ID:himanshugpt,项目名称:evergreen,代码行数:59,代码来源:ui.go
示例12: main
func main() {
n := negroni.Classic()
n.Use(negroni.NewStatic(http.Dir(".")))
// listen on port
n.Run(":8080")
}
开发者ID:aitoroses,项目名称:web-project,代码行数:8,代码来源:server.go
示例13: StaticPathFallback
func StaticPathFallback(path string) http.Handler {
return negroni.New(
negroni.NewStatic(http.Dir(path)),
negroni.Wrap(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
r.URL.Path = "/"
http.FileServer(http.Dir(path)).ServeHTTP(w, r)
})))
}
开发者ID:mukta3396,项目名称:abalone,代码行数:8,代码来源:main.go
示例14: setupNegroni
func (srv *Server) setupNegroni() {
srv.log.Debug("setting up negroni")
srv.n = negroni.New()
srv.n.Use(negroni.NewRecovery())
srv.n.Use(negronilogrus.NewMiddleware())
srv.n.Use(negroni.NewStatic(http.Dir("public")))
srv.n.UseHandler(srv.Router)
}
开发者ID:hamfist,项目名称:artifacts-service,代码行数:8,代码来源:server.go
示例15: main
func main() {
// Load the configuration.
err := envconfig.Process("elwinar", &configuration)
if err != nil {
log.Fatalln("unable to read the configuration from env:", err)
}
// Open the database connection.
database, err = sqlx.Connect("sqlite3", configuration.Database)
if err != nil {
log.Fatalln("unable to open the database:", err)
}
// Initialize the router.
router := httprouter.New()
// Add the front-office handlers.
router.GET("/", Index)
router.GET("/read", List)
router.GET("/article/:slug", View)
router.GET("/fortune", Fortune)
router.GET("/sitemap.xml", Sitemap)
// Add the back-office handlers.
router.GET("/login", Login)
router.POST("/login", Authenticate)
router.GET("/logout", Logout)
router.GET("/write", Write)
router.POST("/write", Create)
router.GET("/article/:slug/edit", Edit)
router.POST("/article/:slug/edit", Update)
router.GET("/article/:slug/delete", Delete)
router.GET("/article/:slug/publish", Publish)
router.GET("/article/:slug/unpublish", Unpublish)
// Initialize the server middleware stack.
stack := negroni.New()
stack.Use(gzip.Gzip(gzip.DefaultCompression))
stack.Use(negroni.NewRecovery())
stack.Use(negroni.NewStatic(http.Dir(configuration.Public)))
stack.Use(sessions.Sessions("elwinar", cookiestore.New([]byte(configuration.Secret))))
stack.UseHandler(router)
// Initialize the HTTP server.
server := &graceful.Server{
Timeout: 1 * time.Second,
Server: &http.Server{
Addr: fmt.Sprintf(":%d", configuration.Port),
Handler: stack,
},
}
// Run the server.
err = server.ListenAndServe()
if err != nil {
log.Fatalln("unable to run the server:", err)
}
}
开发者ID:chibimi,项目名称:elwinar,代码行数:58,代码来源:elwinar.go
示例16: main
func main() {
n := negroni.New(
negroni.NewRecovery(),
negroni.HandlerFunc(MyMiddleware),
negroni.NewLogger(),
negroni.NewStatic(http.Dir("public")),
)
n.Run(":8080")
}
开发者ID:wagnergaldino,项目名称:learning,代码行数:9,代码来源:main.go
示例17: Serve
func (self *Server) Serve() error {
self.mux = http.NewServeMux()
self.router = httprouter.New()
self.RoutePrefix = strings.TrimSuffix(self.RoutePrefix, `/`)
// load route handlers
if err := self.LoadRoutes(); err != nil {
return err
}
staticHandler := negroni.NewStatic(self.MountProxy)
if self.RoutePrefix != DEFAULT_ROUTE_PREFIX {
staticHandler.Prefix = self.RoutePrefix
}
self.mux.HandleFunc(`/_bindings`, func(w http.ResponseWriter, req *http.Request) {
if req.URL.Path == `/_bindings` {
if data, err := json.Marshal(self.Config.Bindings); err == nil {
w.Header().Set(`Content-Type`, `application/json`)
if _, err := w.Write(data); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
} else {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
}
})
// add custom http.Handlers to the mux
for i, handler := range self.Handlers {
log.Debugf("Setting up custom handler %d for pattern '%s'", i, handler.Pattern)
self.mux.Handle(handler.Pattern, handler.Handler)
}
// add custom http.HandleFuncs to the mux
for i, handleFunc := range self.HandleFuncs {
log.Debugf("Setting up custom handler function %d for pattern '%s'", i, handleFunc.Pattern)
self.mux.HandleFunc(handleFunc.Pattern, handleFunc.HandleFunc)
}
// fallback to httprouter (these are the routes defined in the configuration)
self.mux.Handle(`/`, self.router)
self.server = negroni.New()
self.server.Use(negroni.NewRecovery())
self.server.Use(staticHandler)
self.server.Use(negroni.Wrap(self.mux))
self.server.Run(fmt.Sprintf("%s:%d", self.Address, self.Port))
return nil
}
开发者ID:ghetzel,项目名称:diecast,代码行数:56,代码来源:server.go
示例18: main
func main() {
log.Println("Starting...")
runtime.GOMAXPROCS(runtime.NumCPU())
r := mux.NewRouter()
r.HandleFunc("/socket", func(w http.ResponseWriter, req *http.Request) {
conn, err := upgrader.Upgrade(w, req, nil)
if err != nil {
log.Println(err)
return
}
conns = append(conns, conn)
})
r.Methods("POST").Path("/switch-mode").HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
var post PostBodySwitchMode
dec := json.NewDecoder(req.Body)
err := dec.Decode(&post)
if err != nil {
log.Println(err)
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
switchMode(post.Mode, post.Address)
})
n := negroni.New(
negroni.NewRecovery(),
negroni.NewLogger(),
negroni.NewStatic(rice.MustFindBox("public").HTTPBox()),
)
n.UseHandler(r)
listen := os.Getenv("LISTEN")
if listen == "" {
listen = ":3000"
}
lineCh = make(chan string, 32)
go func() {
for line := range lineCh {
for _, conn := range conns {
err := conn.WriteMessage(websocket.TextMessage, []byte(line))
if nil != err {
log.Println(err)
}
}
}
}()
n.Run(listen)
}
开发者ID:ordbogen,项目名称:hdmi-switch-remote,代码行数:56,代码来源:main.go
示例19: main
func main() {
dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
must(err)
distBase := filepath.Join(dir, "..")
port := flag.Uint("port", 8080, "port to listen on")
templateDir := flag.String("templateDir", filepath.Join(distBase, "web", "templates"), "path to html templates")
storeDir := flag.String("storeDir", filepath.Join(distBase, "db"), "directory for saving persistent data")
buildsDir := flag.String("buildsDir", filepath.Join(distBase, "builds"), "directory for saving build output")
assetsDir := flag.String("assetsDir", filepath.Join(distBase, "web", "assets"), "path to static web assets")
gooseCmd := flag.String("gooseCmd", filepath.Join(distBase, "bin", "goose"), `path to "goose" database migration tool`)
debugMode := flag.Bool("debugMode", false, "do not parse templates up front. Only for development use")
flag.Parse()
bootMsg := ` _ _ _ _ _____ _____
| | | | | | | / __ \_ _|
| | | | ___ ___ __| | |__ ___ _ _ ___ ___ ______| / \/ | |
| |/\| |/ _ \ / _ \ / _` + "`" + ` | '_ \ / _ \| | | / __|/ _ \______| | | |
\ /\ / (_) | (_) | (_| | | | | (_) | |_| \__ \ __/ | \__/\_| |_
\/ \/ \___/ \___/ \__,_|_| |_|\___/ \__,_|___/\___| \____/\___/
`
fmt.Println(bootMsg)
if *debugMode {
log.Println("Starting in debug mode")
}
dbDir := filepath.Join(*storeDir, "sqlite")
must(os.MkdirAll(dbDir, 0755))
migrateCmd := exec.Command(*gooseCmd, "up")
migrateCmd.Dir = filepath.Join(*storeDir, "..")
must(migrateCmd.Run())
jobRepo, err := db.NewJobRepository(filepath.Join(dbDir, "store.db"))
must(err)
// Only Interrupt handled, as this is available on all major platforms and is the most common way of stopping Woodhouse-CI
exitChan := make(chan os.Signal)
signal.Notify(exitChan, os.Interrupt)
go func(c <-chan os.Signal) {
log.Printf("Caught signal %s. Closing database connections. Goodbye!\n", <-c)
must(jobRepo.Close())
os.Exit(0)
}(exitChan)
handler := web.New(&jobs.Service{
JobRepository: jobRepo,
Runner: runner.NewDockerRunner(vcs.GitCloner{}),
BuildRepository: builds.NewRepository(*buildsDir),
}, *templateDir, !*debugMode)
server := negroni.New(negroni.NewRecovery(), negroni.NewLogger(), negroni.NewStatic(http.Dir(*assetsDir)))
server.UseHandler(handler)
server.Run(fmt.Sprintf("0.0.0.0:%d", *port))
}
开发者ID:craigfurman,项目名称:Woodhouse-CI,代码行数:56,代码来源:main.go
示例20: main
func main() {
tb := thunderbird.New()
ch := &RoomChannel{tb}
tb.HandleChannel("room", ch)
router := mux.NewRouter()
router.HandleFunc("/", serveHome).Methods("GET")
router.Handle("/ws", tb.HTTPHandler())
n := negroni.New(
negroni.NewRecovery(),
negroni.NewLogger(),
negroni.NewStatic(http.Dir("../client/lib")), // serve thunderbird.js
negroni.NewStatic(http.Dir("public")), // serve other assets
)
n.UseHandler(router)
n.Run(":" + os.Getenv("PORT"))
}
开发者ID:jingweno,项目名称:thunderbird-chat,代码行数:19,代码来源:main.go
注:本文中的github.com/codegangsta/negroni.NewStatic函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论