MCPcopy Create free account
hub / github.com/DNAProject/DNA / webSocketHandler

Method webSocketHandler

http/websocket/websocket/server.go:254–291  ·  view source on GitHub ↗
(w http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

252}
253
254func (self *WsServer) webSocketHandler(w http.ResponseWriter, r *http.Request) {
255 wsConn, err := self.Upgrader.Upgrade(w, r, nil)
256 if err != nil {
257 log.Error("websocket Upgrader: ", err)
258 return
259 }
260 wsConn.SetReadLimit(1024 * 1024)
261 defer wsConn.Close()
262 nsSession, err := self.SessionList.NewSession(wsConn)
263 if err != nil {
264 log.Error("websocket NewSession:", err)
265 return
266 }
267
268 defer func() {
269 self.deleteTxHashes(nsSession.GetSessionId())
270 self.deleteSubscribe(nsSession.GetSessionId())
271 self.SessionList.CloseSession(nsSession)
272 if err := recover(); err != nil {
273 log.Fatal("websocket recover:", err)
274 }
275 }()
276
277 for {
278 _, bysMsg, err := wsConn.ReadMessage()
279 if err == nil {
280 if self.OnDataHandle(nsSession, bysMsg, r) {
281 nsSession.UpdateActiveTime()
282 }
283 continue
284 }
285 e, ok := err.(net.Error)
286 if !ok || !e.Timeout() {
287 log.Infof("websocket conn:", err)
288 return
289 }
290 }
291}
292func (self *WsServer) IsValidMsg(reqMsg map[string]interface{}) bool {
293 if _, ok := reqMsg["Hash"].(string); !ok && reqMsg["Hash"] != nil {
294 return false

Callers

nothing calls this directly

Calls 12

deleteTxHashesMethod · 0.95
GetSessionIdMethod · 0.95
deleteSubscribeMethod · 0.95
OnDataHandleMethod · 0.95
UpdateActiveTimeMethod · 0.95
ErrorFunction · 0.92
FatalFunction · 0.92
InfofFunction · 0.92
NewSessionMethod · 0.80
CloseSessionMethod · 0.80
TimeoutMethod · 0.80
CloseMethod · 0.65

Tested by

no test coverage detected