diff --git a/wshandler/room.go b/wshandler/room.go index decb7c6..6d966cb 100644 --- a/wshandler/room.go +++ b/wshandler/room.go @@ -98,7 +98,7 @@ func (r *room) loop(ctx context.Context, conns *map[string]*wsconn) (normalEnd b logger.Println("websocket.NewPreparedMessage failed :", err) } else { r.sendMsgChan <- send_msg_queue_elem{ - to: conn, + to: conn.Conn, pmsg: pmsg, } } diff --git a/wshandler/wshandler.go b/wshandler/wshandler.go index c323dc3..d9d9d21 100644 --- a/wshandler/wshandler.go +++ b/wshandler/wshandler.go @@ -81,7 +81,7 @@ type EventReceiver interface { } type send_msg_queue_elem struct { - to *wsconn + to *websocket.Conn pmsg *websocket.PreparedMessage //msg []byte } @@ -196,6 +196,14 @@ func (ws *WebsocketHandler) SendUpstreamMessage(msg *UpstreamMessage) { ws.localDeliveryChan <- msg } +func (ws *WebsocketHandler) WriteDirectMessage(c *websocket.Conn, messageType int, data []byte) { + pmsg, _ := websocket.NewPreparedMessage(messageType, data) + ws.sendMsgChan <- send_msg_queue_elem{ + to: c, + pmsg: pmsg, + } +} + func (ws *WebsocketHandler) EnterRoom(room string, accid primitive.ObjectID) { ws.localDeliveryChan <- &commandMessage{ Cmd: commandType_EnterRoom, @@ -334,7 +342,7 @@ func (ws *WebsocketHandler) mainLoop(ctx context.Context) { } ws.sendMsgChan <- send_msg_queue_elem{ - to: conn, + to: conn.Conn, pmsg: pmsg, }