samples/twitter-sentiment-processor/demos/demo2/viewer/main.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)
}
}