respond_msg.go 704 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package http
  2. import (
  3. "errors"
  4. "io"
  5. "io/ioutil"
  6. "net/http"
  7. "rocommon"
  8. )
  9. type MessageRespond struct {
  10. Msg interface{}
  11. StatusCode int
  12. }
  13. func (this *MessageRespond) WriteRespond(sess *httpSession) error {
  14. this.StatusCode = http.StatusOK
  15. httpCodec := rocommon.GetHttpCodec("httpjson")
  16. if httpCodec == nil {
  17. return errors.New("ResponseCodec not found httpjson")
  18. }
  19. data, err := httpCodec.Marshal(this.Msg)
  20. if err != nil {
  21. return err
  22. }
  23. sess.resp.Header().Set("Content-Type", "application/json"+";charset=UTF-8")
  24. sess.resp.WriteHeader(this.StatusCode)
  25. bodyData, err := ioutil.ReadAll(data.(io.Reader))
  26. if err != nil {
  27. return err
  28. }
  29. sess.resp.Write(bodyData)
  30. return nil
  31. }