mirror of https://github.com/dapr/samples.git
64 lines
1.2 KiB
Go
64 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"net"
|
|
"net/http"
|
|
"os"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"gopkg.in/olahol/melody.v1"
|
|
)
|
|
|
|
var (
|
|
logger = log.New(os.Stdout, "VIEWER == ", 0)
|
|
|
|
// AppVersion will be overritten during build
|
|
AppVersion = "v0.0.1-default"
|
|
|
|
// The route name to process the incoming tweets on
|
|
topicRoute = "showOnWebSite"
|
|
|
|
broadcaster *melody.Melody
|
|
)
|
|
|
|
func main() {
|
|
|
|
gin.SetMode(gin.ReleaseMode)
|
|
|
|
// router
|
|
r := gin.New()
|
|
r.Use(gin.Recovery())
|
|
|
|
// ws
|
|
broadcaster = melody.New()
|
|
broadcaster.Upgrader.CheckOrigin = func(r *http.Request) bool { return true }
|
|
|
|
// static
|
|
r.LoadHTMLGlob("resource/template/*")
|
|
r.Static("/static", "./resource/static")
|
|
r.StaticFile("/favicon.ico", "./resource/static/img/favicon.ico")
|
|
|
|
// simple routes
|
|
r.GET("/", rootHandler)
|
|
r.GET("/dapr/subscribe", subscribeHandler)
|
|
|
|
// websockets
|
|
r.GET("/ws", func(c *gin.Context) {
|
|
broadcaster.HandleRequest(c.Writer, c.Request)
|
|
})
|
|
|
|
// topic route
|
|
viewerRoute := fmt.Sprintf("/%s", topicRoute)
|
|
logger.Printf("viewer route: %s", viewerRoute)
|
|
r.POST(viewerRoute, eventHandler)
|
|
|
|
// server
|
|
hostPort := net.JoinHostPort("0.0.0.0", "8083")
|
|
logger.Printf("Server (%s) starting: %s \n", AppVersion, hostPort)
|
|
if err := r.Run(hostPort); err != nil {
|
|
logger.Fatal(err)
|
|
}
|
|
}
|