socket -> websocket_peer.

This commit is contained in:
Miroslav Šedivý
2020-11-25 18:36:33 +01:00
parent d49542013b
commit ff7efe9f3b
7 changed files with 68 additions and 68 deletions

View File

@ -40,7 +40,7 @@ type MessageHandlerCtx struct {
locked bool
}
func (h *MessageHandlerCtx) Connected(session types.Session, socket types.WebSocket) (bool, string) {
func (h *MessageHandlerCtx) Connected(session types.Session, websocket_peer types.WebSocketPeer) (bool, string) {
if h.locked && !session.Admin(){
h.logger.Debug().Msg("server locked")
return false, "locked"

View File

@ -142,13 +142,13 @@ func (ws *WebSocketManagerCtx) Upgrade(w http.ResponseWriter, r *http.Request) e
return connection.Close()
}
socket := &WebSocketCtx{
websocket_peer := &WebSocketPeerCtx{
session: session,
ws: ws,
connection: connection,
}
ok, reason := ws.handler.Connected(session, socket)
ok, reason := ws.handler.Connected(session, websocket_peer)
if !ok {
// TODO: Refactor
if err = connection.WriteJSON(message.Disconnect{
@ -161,7 +161,7 @@ func (ws *WebSocketManagerCtx) Upgrade(w http.ResponseWriter, r *http.Request) e
return connection.Close()
}
session.SetSocket(socket)
session.SetWebSocketPeer(websocket_peer)
ws.logger.
Debug().

View File

@ -0,0 +1,47 @@
package websocket
import (
"encoding/json"
"sync"
"github.com/gorilla/websocket"
"demodesk/neko/internal/types"
)
type WebSocketPeerCtx struct {
session types.Session
ws *WebSocketManagerCtx
connection *websocket.Conn
mu sync.Mutex
}
func (websocket_peer *WebSocketPeerCtx) Send(v interface{}) error {
websocket_peer.mu.Lock()
defer websocket_peer.mu.Unlock()
if websocket_peer.connection == nil {
return nil
}
raw, err := json.Marshal(v)
if err != nil {
return err
}
websocket_peer.ws.logger.Debug().
Str("session", websocket_peer.session.ID()).
Str("address", websocket_peer.connection.RemoteAddr().String()).
Str("raw", string(raw)).
Msg("sending message to client")
return websocket_peer.connection.WriteMessage(websocket.TextMessage, raw)
}
func (websocket_peer *WebSocketPeerCtx) Destroy() error {
if websocket_peer.connection == nil {
return nil
}
return websocket_peer.connection.Close()
}

View File

@ -1,47 +0,0 @@
package websocket
import (
"encoding/json"
"sync"
"github.com/gorilla/websocket"
"demodesk/neko/internal/types"
)
type WebSocketCtx struct {
session types.Session
ws *WebSocketManagerCtx
connection *websocket.Conn
mu sync.Mutex
}
func (socket *WebSocketCtx) Send(v interface{}) error {
socket.mu.Lock()
defer socket.mu.Unlock()
if socket.connection == nil {
return nil
}
raw, err := json.Marshal(v)
if err != nil {
return err
}
socket.ws.logger.Debug().
Str("session", socket.session.ID()).
Str("address", socket.connection.RemoteAddr().String()).
Str("raw", string(raw)).
Msg("sending message to client")
return socket.connection.WriteMessage(websocket.TextMessage, raw)
}
func (socket *WebSocketCtx) Destroy() error {
if socket.connection == nil {
return nil
}
return socket.connection.Close()
}