Rfc6455Processor.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace SuperWebSocket.Protocol
  6. {
  7. /// <summary>
  8. /// http://tools.ietf.org/html/rfc6455
  9. /// </summary>
  10. class Rfc6455Processor : DraftHybi10Processor
  11. {
  12. public Rfc6455Processor()
  13. : base(13, new CloseStatusCodeRfc6455())
  14. {
  15. }
  16. protected override string OriginKey
  17. {
  18. get
  19. {
  20. return WebSocketConstant.Origin;
  21. }
  22. }
  23. public override bool IsValidCloseCode(int code)
  24. {
  25. var closeCode = this.CloseStatusClode;
  26. if (code >= 0 && code <= 999)
  27. return false;
  28. if (code >= 1000 && code <= 2999)
  29. {
  30. if (code == closeCode.NormalClosure
  31. || code == closeCode.GoingAway
  32. || code == closeCode.ProtocolError
  33. || code == closeCode.NotAcceptableData
  34. || code == closeCode.TooLargeFrame
  35. || code == closeCode.InvalidUTF8
  36. || code == closeCode.ViolatePolicy
  37. || code == closeCode.ExtensionNotMatch
  38. || code == closeCode.UnexpectedCondition)
  39. {
  40. return true;
  41. }
  42. return false;
  43. }
  44. if (code >= 3000 && code <= 4999)
  45. return true;
  46. return false;
  47. }
  48. }
  49. }