coder/websocket

Return net.ErrClosed from Read methods when connection is closed by us

srinivasan-getstan opened this issue · 6 comments

Whenever I close the connection I get this error and the server doesn't respond. Can you please help me here

My reader function;

func WsReader(log *logger.LoggerEvent, requestCtx context.Context, wsConn *_websocket.Conn, requestId uuid.UUID, userId int32) {
	for {
		_, buff, err := wsConn.Read(requestCtx)
		if err != nil {
			if err != io.EOF {
				log.Errorf(`Failed to read the data : ERROR : %s : CODE : %s`, err, _websocket.CloseStatus(err))
			}
			break
		}

		if len(buff) == 0 {
			break
		}

		data := eventSchemaHandler.GetRootAsEventWrapper(buff, 0)
		log.Infof("Event received : %s : USER_ID : %d", data.Event(), userId)
		unionTable := new(flatbuffers.Table)
		data.Payload(unionTable)
		event.SerializeEvents(log, wsConn, unionTable, requestId, string(data.Event()), string(data.ClubId()))
	}
}

My Connection Close function:

func CloseSocketConnection(wsConn *_websocket.Conn, clubId string, statusCode _websocket.StatusCode, msg string) {
	wsConn.CloseRead(context.Background())
	wsConn.Close(statusCode, msg)
} 

Use errors.Is

Also not sure what you mean by server doesn't respond. And you're not using CloseRead correctly, please read the docs.

Actually this is interesting. You would expect net.ErrClosed instead. I'll make it return that.

Can you help me with how to implement CloseRead

Actually this is interesting. You would expect net.ErrClosed instead. I'll make it return that.

Thanks

CloseSocketConnection

Can you point out what is wrong with the CloseSocketConnection function