@@ -121,47 +121,46 @@ func (c *Connection) WriteMessage(data []byte) error {
121
121
return nil
122
122
}
123
123
124
- func (c * Connection ) ReadMessage (ctx context.Context ) ([] byte , error ) {
124
+ func (c * Connection ) ReadMessage (ctx context.Context , buf io. Writer ) error {
125
125
for {
126
126
select {
127
127
case <- ctx .Done ():
128
- return nil , errors .New ("context canceled" )
128
+ return errors .New ("context canceled" )
129
129
default :
130
130
}
131
131
132
132
h , err := c .reader .NextFrame ()
133
133
if err != nil {
134
134
c .conn .Close ()
135
- return nil , fmt .Errorf ("failed to advance frame: %w" , err )
135
+ return fmt .Errorf ("failed to advance frame: %w" , err )
136
136
}
137
137
138
138
if h .OpCode .IsControl () {
139
139
if err := c .controlHandler (h , c .reader ); err != nil {
140
- return nil , fmt .Errorf ("failed to handle control frame: %w" , err )
140
+ return fmt .Errorf ("failed to handle control frame: %w" , err )
141
141
}
142
142
} else if h .OpCode == ws .OpBinary ||
143
143
h .OpCode == ws .OpText {
144
144
break
145
145
}
146
146
147
147
if err := c .reader .Discard (); err != nil {
148
- return nil , fmt .Errorf ("failed to discard: %w" , err )
148
+ return fmt .Errorf ("failed to discard: %w" , err )
149
149
}
150
150
}
151
151
152
- buf := new (bytes.Buffer )
153
152
if c .msgState .IsCompressed () && c .enableCompression {
154
153
c .flateReader .Reset (c .reader )
155
154
if _ , err := io .Copy (buf , c .flateReader ); err != nil {
156
- return nil , fmt .Errorf ("failed to read message: %w" , err )
155
+ return fmt .Errorf ("failed to read message: %w" , err )
157
156
}
158
157
} else {
159
158
if _ , err := io .Copy (buf , c .reader ); err != nil {
160
- return nil , fmt .Errorf ("failed to read message: %w" , err )
159
+ return fmt .Errorf ("failed to read message: %w" , err )
161
160
}
162
161
}
163
162
164
- return buf . Bytes (), nil
163
+ return nil
165
164
}
166
165
167
166
func (c * Connection ) Close () error {
0 commit comments