...
1
2
3
4
5 package websocket
6
7 import (
8 "io"
9 "strings"
10 )
11
12
13
14
15 func JoinMessages(c *Conn, term string) io.Reader {
16 return &joinReader{c: c, term: term}
17 }
18
19 type joinReader struct {
20 c *Conn
21 term string
22 r io.Reader
23 }
24
25 func (r *joinReader) Read(p []byte) (int, error) {
26 if r.r == nil {
27 var err error
28 _, r.r, err = r.c.NextReader()
29 if err != nil {
30 return 0, err
31 }
32 if r.term != "" {
33 r.r = io.MultiReader(r.r, strings.NewReader(r.term))
34 }
35 }
36 n, err := r.r.Read(p)
37 if err == io.EOF {
38 err = nil
39 r.r = nil
40 }
41 return n, err
42 }
43
View as plain text