ws peer 를 제네릭으로 변경
This commit is contained in:
@ -18,18 +18,18 @@ import (
|
||||
"github.com/gorilla/websocket"
|
||||
)
|
||||
|
||||
type WebsocketPeerHandler struct {
|
||||
WebsocketPeerApiBroker
|
||||
type WebsocketPeerHandler[T PeerInterface] struct {
|
||||
WebsocketPeerApiBroker[T]
|
||||
sessionConsumer session.Consumer
|
||||
}
|
||||
|
||||
func NewWebsocketPeerHandler(consumer session.Consumer) WebsocketPeerHandler {
|
||||
return WebsocketPeerHandler{
|
||||
func NewWebsocketPeerHandler[T PeerInterface](consumer session.Consumer) WebsocketPeerHandler[T] {
|
||||
return WebsocketPeerHandler[T]{
|
||||
sessionConsumer: consumer,
|
||||
}
|
||||
}
|
||||
|
||||
func (ws *WebsocketPeerHandler) RegisterHandlers(serveMux *http.ServeMux, prefix string) error {
|
||||
func (ws *WebsocketPeerHandler[T]) RegisterHandlers(serveMux *http.ServeMux, prefix string) error {
|
||||
url := gocommon.MakeHttpHandlerPattern(prefix, "ws")
|
||||
if *noAuthFlag {
|
||||
serveMux.HandleFunc(url, ws.upgrade_nosession)
|
||||
@ -40,13 +40,15 @@ func (ws *WebsocketPeerHandler) RegisterHandlers(serveMux *http.ServeMux, prefix
|
||||
return nil
|
||||
}
|
||||
|
||||
func (ws *WebsocketPeerHandler) upgrade_core(conn *websocket.Conn, accid primitive.ObjectID, nonce uint32) {
|
||||
func (ws *WebsocketPeerHandler[T]) upgrade_core(conn *websocket.Conn, accid primitive.ObjectID, nonce uint32) {
|
||||
go func(c *websocket.Conn, accid primitive.ObjectID) {
|
||||
peer := ws.CreatePeer(accid)
|
||||
ws.ClientConnected(peer, c)
|
||||
|
||||
var closeReason string
|
||||
|
||||
defer func() {
|
||||
peer.ClientDisconnected(closeReason)
|
||||
}()
|
||||
|
||||
response := make([]byte, 255)
|
||||
for {
|
||||
response = response[:5]
|
||||
@ -112,11 +114,10 @@ func (ws *WebsocketPeerHandler) upgrade_core(conn *websocket.Conn, accid primiti
|
||||
}
|
||||
}
|
||||
}
|
||||
ws.ClientDisconnected(peer, closeReason)
|
||||
}(conn, accid)
|
||||
}
|
||||
|
||||
func (ws *WebsocketPeerHandler) upgrade_nosession(w http.ResponseWriter, r *http.Request) {
|
||||
func (ws *WebsocketPeerHandler[T]) upgrade_nosession(w http.ResponseWriter, r *http.Request) {
|
||||
// 클라이언트 접속
|
||||
defer func() {
|
||||
s := recover()
|
||||
@ -166,7 +167,7 @@ func (ws *WebsocketPeerHandler) upgrade_nosession(w http.ResponseWriter, r *http
|
||||
ws.upgrade_core(conn, accid, nonce)
|
||||
}
|
||||
|
||||
func (ws *WebsocketPeerHandler) upgrade(w http.ResponseWriter, r *http.Request) {
|
||||
func (ws *WebsocketPeerHandler[T]) upgrade(w http.ResponseWriter, r *http.Request) {
|
||||
// 클라이언트 접속
|
||||
defer func() {
|
||||
s := recover()
|
||||
|
||||
Reference in New Issue
Block a user