FleckServer.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using Fleck;
  2. using MediaBrowser.Common.Net;
  3. using System;
  4. using IWebSocketServer = MediaBrowser.Common.Net.IWebSocketServer;
  5. namespace MediaBrowser.Server.Implementations.WebSocket
  6. {
  7. public class FleckServer : IWebSocketServer
  8. {
  9. private WebSocketServer _server;
  10. public void Start(int portNumber)
  11. {
  12. var server = new WebSocketServer("ws://localhost:" + portNumber);
  13. server.Start(socket =>
  14. {
  15. socket.OnOpen = () => OnClientConnected(socket);
  16. });
  17. _server = server;
  18. }
  19. public void Stop()
  20. {
  21. _server.Dispose();
  22. }
  23. private void OnClientConnected(Fleck.IWebSocketConnection context)
  24. {
  25. if (WebSocketConnected != null)
  26. {
  27. var socket = new FleckWebSocket(context);
  28. WebSocketConnected(this, new WebSocketConnectEventArgs
  29. {
  30. WebSocket = socket,
  31. Endpoint = context.ConnectionInfo.ClientIpAddress + ":" + context.ConnectionInfo.ClientPort
  32. });
  33. }
  34. }
  35. public event EventHandler<WebSocketConnectEventArgs> WebSocketConnected;
  36. public int Port
  37. {
  38. get { return _server.Port; }
  39. }
  40. public void Dispose()
  41. {
  42. _server.Dispose();
  43. }
  44. }
  45. }