IWebSocket.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. using System.Net.Sockets;
  2. namespace NetCoreServer
  3. {
  4. /// <summary>
  5. /// WebSocket interface
  6. /// </summary>
  7. public interface IWebSocket
  8. {
  9. /// <summary>
  10. /// Handle WebSocket client connecting notification
  11. /// </summary>
  12. /// <remarks>Notification is called when WebSocket client is connecting to the server. You can handle the connection and change WebSocket upgrade HTTP request by providing your own headers.</remarks>
  13. /// <param name="request">WebSocket upgrade HTTP request</param>
  14. void OnWsConnecting(HttpRequest request) {}
  15. /// <summary>
  16. /// Handle WebSocket client connected notification
  17. /// </summary>
  18. /// <param name="response">WebSocket upgrade HTTP response</param>
  19. void OnWsConnected(HttpResponse response) {}
  20. /// <summary>
  21. /// Handle WebSocket server session validating notification
  22. /// </summary>
  23. /// <remarks>Notification is called when WebSocket client is connecting to the server. You can handle the connection and validate WebSocket upgrade HTTP request.</remarks>
  24. /// <param name="request">WebSocket upgrade HTTP request</param>
  25. /// <param name="response">WebSocket upgrade HTTP response</param>
  26. /// <returns>return 'true' if the WebSocket update request is valid, 'false' if the WebSocket update request is not valid</returns>
  27. bool OnWsConnecting(HttpRequest request, HttpResponse response) { return true; }
  28. /// <summary>
  29. /// Handle WebSocket server session connected notification
  30. /// </summary>
  31. /// <param name="request">WebSocket upgrade HTTP request</param>
  32. void OnWsConnected(HttpRequest request) {}
  33. /// <summary>
  34. /// Handle WebSocket client disconnecting notification
  35. /// </summary>
  36. void OnWsDisconnecting() {}
  37. /// <summary>
  38. /// Handle WebSocket client disconnected notification
  39. /// </summary>
  40. void OnWsDisconnected() {}
  41. /// <summary>
  42. /// Handle WebSocket received notification
  43. /// </summary>
  44. /// <param name="buffer">Received buffer</param>
  45. /// <param name="offset">Received buffer offset</param>
  46. /// <param name="size">Received buffer size</param>
  47. void OnWsReceived(byte[] buffer, long offset, long size) {}
  48. /// <summary>
  49. /// Handle WebSocket client close notification
  50. /// </summary>
  51. /// <param name="buffer">Received buffer</param>
  52. /// <param name="offset">Received buffer offset</param>
  53. /// <param name="size">Received buffer size</param>
  54. /// <param name="status">WebSocket close status (default is 1000)</param>
  55. void OnWsClose(byte[] buffer, long offset, long size, int status = 1000) {}
  56. /// <summary>
  57. /// Handle WebSocket ping notification
  58. /// </summary>
  59. /// <param name="buffer">Received buffer</param>
  60. /// <param name="offset">Received buffer offset</param>
  61. /// <param name="size">Received buffer size</param>
  62. void OnWsPing(byte[] buffer, long offset, long size) {}
  63. /// <summary>
  64. /// Handle WebSocket pong notification
  65. /// </summary>
  66. /// <param name="buffer">Received buffer</param>
  67. /// <param name="offset">Received buffer offset</param>
  68. /// <param name="size">Received buffer size</param>
  69. void OnWsPong(byte[] buffer, long offset, long size) {}
  70. /// <summary>
  71. /// Handle WebSocket error notification
  72. /// </summary>
  73. /// <param name="error">Error message</param>
  74. void OnWsError(string error) {}
  75. /// <summary>
  76. /// Handle socket error notification
  77. /// </summary>
  78. /// <param name="error">Socket error</param>
  79. void OnWsError(SocketError error) {}
  80. /// <summary>
  81. /// Send WebSocket server upgrade response
  82. /// </summary>
  83. /// <param name="response">WebSocket upgrade HTTP response</param>
  84. void SendUpgrade(HttpResponse response) {}
  85. }
  86. }