Skip to content

Commit

Permalink
WebSocket関連をServiceへ
Browse files Browse the repository at this point in the history
  • Loading branch information
Crow314 committed Nov 4, 2020
1 parent 7ca44ac commit 6bdc92d
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 32 deletions.
10 changes: 10 additions & 0 deletions pkg/controller/webSocketController.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package controller

import (
"github.com/gin-gonic/gin"
"lottery_back/pkg/service"
)

func WebSocketConnector(ctx *gin.Context) {
service.WebsocketApp.WebSocketHandler(ctx)
}
3 changes: 1 addition & 2 deletions pkg/server/routes.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@ import (
)

func (server *Server) setRoutes() {
server.Engine.GET("/ws", server.WsApp.wsHandler)

server.Engine.GET("/ws", controller.WebSocketConnector)
server.Engine.POST("/operation", controller.OperationReceiver)

server.Engine.GET("/ping", func(ctx *gin.Context) {
Expand Down
25 changes: 2 additions & 23 deletions pkg/server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,18 @@ package server
import (
"github.com/gin-contrib/cors"
"github.com/gin-gonic/gin"
"log"
"lottery_back/pkg/config"
"lottery_back/pkg/model"
"time"
"lottery_back/pkg/service"
)

type Server struct {
Engine *gin.Engine
WsApp WsApp
}

// Up start server
func (server *Server) Up() {
server.Engine = gin.Default()
server.WsApp = GenerateWsApp()
service.GenerateWsApp()

// CORS setup
corsConfig := cors.DefaultConfig()
Expand All @@ -26,23 +23,5 @@ func (server *Server) Up() {

server.setRoutes()

go server.WsApp.messageSender()

go server.testSender() // For test Run

server.Engine.Run(":8080")
}

func (server *Server) testSender() {
time.Sleep(time.Second * 5)

for i := 1; i < 100; i++ {
result, err := model.GetResult(i)
if err != nil {
log.Printf("warn: %v", err)
}

server.WsApp.sender <- result
time.Sleep(time.Second * 10)
}
}
17 changes: 10 additions & 7 deletions pkg/server/websocket.go → pkg/service/websocketService.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package server
package service

import (
"github.com/gin-gonic/gin"
Expand All @@ -16,9 +16,14 @@ type WsApp struct {
sync.RWMutex
}

// JSONData is JSON formatted data
type JSONData interface{}

var WebsocketApp WsApp

// GenerateWsApp is websocket app generate
func GenerateWsApp() WsApp {
return WsApp{
func GenerateWsApp() {
WebsocketApp = WsApp{
clients: make(map[*websocket.Conn]bool),
upgrader: websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool {
Expand All @@ -29,14 +34,12 @@ func GenerateWsApp() WsApp {
}
}

// JSONData is JSON formatted data
type JSONData interface{} // もう少しマシな書き方がある気がする

// wsHandler is websocket connection handler
func (wsApp *WsApp) wsHandler(ctx *gin.Context) {
func (wsApp *WsApp) WebSocketHandler(ctx *gin.Context) {
ws, err := wsApp.upgrader.Upgrade(ctx.Writer, ctx.Request, nil)
if err != nil {
log.Printf("error: %v", err)
ctx.String(http.StatusBadRequest, "Can't upgrade websocket\n", err)
return
}

Expand Down

0 comments on commit 6bdc92d

Please sign in to comment.