@@ -69,6 +69,25 @@ func (s *socket) WriteMessage(messageType int, data []byte) error {
69
69
return s .conn .WriteMessage (messageType , data )
70
70
}
71
71
72
+ func (s * socket ) WriteDataIgnoreError (data interface {}) {
73
+ err := s .WriteData (data )
74
+ if err != nil {
75
+ joinLog .WithError (err ).Error ("send message write message" )
76
+ s .writeWebsocketError (roomApi .NewNetWorkTimeoutError (err .Error ()))
77
+ }
78
+ }
79
+
80
+ func (s * socket ) WriteData (data interface {}) error {
81
+ s .rwLock .Lock ()
82
+ defer s .rwLock .Unlock ()
83
+ bs , err := json .Marshal (data )
84
+ if err != nil {
85
+ return roomApi .NewMessageContentError ("send message marshal error %s" , err .Error ())
86
+ }
87
+
88
+ return s .conn .WriteMessage (websocket .TextMessage , bs )
89
+ }
90
+
72
91
func (s * socket ) WriteJSON (v interface {}) error {
73
92
s .rwLock .Lock ()
74
93
defer s .rwLock .Unlock ()
@@ -133,24 +152,14 @@ func readClientMessage(ctx context.Context, socket *socket, room roomApi.RemoteR
133
152
return nil
134
153
}
135
154
155
+ socket .WriteDataIgnoreError (msg .GetReply ())
136
156
return nil
137
157
}
138
158
139
159
func onRoomMessage (ctx context.Context , socket * socket , room roomApi.RemoteRoom ) error {
140
160
select {
141
161
case msg := <- room .OnMessage ():
142
- bs , err := json .Marshal (msg )
143
- if err != nil {
144
- return roomApi .NewMessageContentError ("send message marshal error %s" , err .Error ())
145
- }
146
-
147
- err = socket .WriteMessage (websocket .TextMessage , bs )
148
- if err != nil {
149
- joinLog .WithError (err ).Error ("send message write message" )
150
- socket .writeWebsocketError (roomApi .NewNetWorkTimeoutError (err .Error ()))
151
- return nil
152
- }
153
-
162
+ socket .WriteDataIgnoreError (msg )
154
163
case <- room .Done ():
155
164
return roomApi .NewRoomCloseError ("room %s leave" , room .GetRoomAddress ().ID )
156
165
case <- ctx .Done ():
@@ -235,7 +244,7 @@ func (s *WebSocket) serveRoom(opt *roomApi.Info, connection *roomApi.Connection,
235
244
if err != nil {
236
245
retCode = "read_message_close"
237
246
socket .writeWebsocketError (err )
238
- joinLog .WithField ("connection " , connection .Address .ID ).Info (err )
247
+ joinLog .WithField ("readClientMessage " , connection .Address .ID ).Info (err )
239
248
return
240
249
}
241
250
}
0 commit comments