WriteMessage를 WritePreparedMessage로 변경
This commit is contained in:
@ -93,10 +93,14 @@ func (r *room) loop(ctx context.Context, conns *map[string]*wsconn) (normalEnd b
|
|||||||
enc.Encode(ds)
|
enc.Encode(ds)
|
||||||
|
|
||||||
for _, conn := range *conns {
|
for _, conn := range *conns {
|
||||||
r.sendMsgChan <- send_msg_queue_elem{
|
pmsg, err := websocket.NewPreparedMessage(websocket.TextMessage, buff.Bytes())
|
||||||
to: conn,
|
if err != nil {
|
||||||
mt: websocket.TextMessage,
|
logger.Println("websocket.NewPreparedMessage failed :", err)
|
||||||
msg: buff.Bytes(),
|
} else {
|
||||||
|
r.sendMsgChan <- send_msg_queue_elem{
|
||||||
|
to: conn,
|
||||||
|
pmsg: pmsg,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -81,9 +81,9 @@ type EventReceiver interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type send_msg_queue_elem struct {
|
type send_msg_queue_elem struct {
|
||||||
to *wsconn
|
to *wsconn
|
||||||
mt int
|
pmsg *websocket.PreparedMessage
|
||||||
msg []byte
|
//msg []byte
|
||||||
}
|
}
|
||||||
|
|
||||||
type websocketHandlerBase struct {
|
type websocketHandlerBase struct {
|
||||||
@ -137,7 +137,7 @@ func NewWebsocketHandler(consumer session.Consumer, redisUrl string) (*Websocket
|
|||||||
defer func() {
|
defer func() {
|
||||||
r := recover()
|
r := recover()
|
||||||
if r != nil {
|
if r != nil {
|
||||||
logger.Println("send_msg_queue_elem sender recover :", r, string(elem.msg))
|
logger.Println("send_msg_queue_elem sender recover :", r)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
if elem == nil {
|
if elem == nil {
|
||||||
@ -147,7 +147,7 @@ func NewWebsocketHandler(consumer session.Consumer, redisUrl string) (*Websocket
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
elem.to.WriteMessage(elem.mt, elem.msg)
|
elem.to.WritePreparedMessage(elem.pmsg)
|
||||||
}
|
}
|
||||||
|
|
||||||
for elem := range sendchan {
|
for elem := range sendchan {
|
||||||
@ -327,10 +327,15 @@ func (ws *WebsocketHandler) mainLoop(ctx context.Context) {
|
|||||||
Body: usermsg.Body,
|
Body: usermsg.Body,
|
||||||
Tag: usermsg.Tag,
|
Tag: usermsg.Tag,
|
||||||
})
|
})
|
||||||
|
pmsg, err := websocket.NewPreparedMessage(websocket.TextMessage, ds)
|
||||||
|
if err != nil {
|
||||||
|
logger.Println("websocket.NewPreparedMessage failed :", err)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
ws.sendMsgChan <- send_msg_queue_elem{
|
ws.sendMsgChan <- send_msg_queue_elem{
|
||||||
to: conn,
|
to: conn,
|
||||||
mt: websocket.TextMessage,
|
pmsg: pmsg,
|
||||||
msg: ds,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
|
|||||||
Reference in New Issue
Block a user