MCPcopy
hub / github.com/gorilla/websocket / echoReadAll

Function echoReadAll

examples/autobahn/server.go:88–144  ·  examples/autobahn/server.go::echoReadAll

echoReadAll echoes messages from the client by reading the entire message with ioutil.ReadAll.

(w http.ResponseWriter, r *http.Request, writeMessage, writePrepared bool)

Source from the content-addressed store, hash-verified

86// echoReadAll echoes messages from the client by reading the entire message
87// with ioutil.ReadAll.
88func echoReadAll(w http.ResponseWriter, r *http.Request, writeMessage, writePrepared bool) {
89 conn, err := upgrader.Upgrade(w, r, nil)
90 if err != nil {
91 log.Println("Upgrade:", err)
92 return
93 }
94 defer conn.Close()
95 for {
96 mt, b, err := conn.ReadMessage()
97 if err != nil {
98 if err != io.EOF {
99 log.Println("NextReader:", err)
100 }
101 return
102 }
103 if mt == websocket.TextMessage {
104 if !utf8.Valid(b) {
105 conn.WriteControl(websocket.CloseMessage,
106 websocket.FormatCloseMessage(websocket.CloseInvalidFramePayloadData, ""),
107 time.Time{})
108 log.Println("ReadAll: invalid utf8")
109 }
110 }
111 if writeMessage {
112 if !writePrepared {
113 err = conn.WriteMessage(mt, b)
114 if err != nil {
115 log.Println("WriteMessage:", err)
116 }
117 } else {
118 pm, err := websocket.NewPreparedMessage(mt, b)
119 if err != nil {
120 log.Println("NewPreparedMessage:", err)
121 return
122 }
123 err = conn.WritePreparedMessage(pm)
124 if err != nil {
125 log.Println("WritePreparedMessage:", err)
126 }
127 }
128 } else {
129 w, err := conn.NextWriter(mt)
130 if err != nil {
131 log.Println("NextWriter:", err)
132 return
133 }
134 if _, err := w.Write(b); err != nil {
135 log.Println("Writer:", err)
136 return
137 }
138 if err := w.Close(); err != nil {
139 log.Println("Close:", err)
140 return
141 }
142 }
143 }
144}
145

Callers 3

echoReadAllWriterFunction · 0.85
echoReadAllWriteMessageFunction · 0.85

Calls 10

FormatCloseMessageFunction · 0.92
NewPreparedMessageFunction · 0.92
UpgradeMethod · 0.80
ReadMessageMethod · 0.80
WriteControlMethod · 0.80
WriteMessageMethod · 0.80
WritePreparedMessageMethod · 0.80
NextWriterMethod · 0.80
CloseMethod · 0.45
WriteMethod · 0.45

Tested by

no test coverage detected