WebSocketServerManager.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using System;
  2. using System.Collections.Generic;
  3. using Fleck;
  4. public class WebSocketServerManager
  5. {
  6. private List<IWebSocketConnection> _clients = new List<IWebSocketConnection>();
  7. private WebSocketServer _server;
  8. public void Start()
  9. {
  10. _server = new WebSocketServer("ws://0.0.0.0:5000");
  11. _server.Start(socket =>
  12. {
  13. socket.OnOpen = () =>
  14. {
  15. Console.WriteLine("Client connected.");
  16. _clients.Add(socket);
  17. };
  18. socket.OnClose = () =>
  19. {
  20. Console.WriteLine("Client disconnected.");
  21. _clients.Remove(socket);
  22. };
  23. socket.OnMessage = message =>
  24. {
  25. Console.WriteLine("Received message: " + message);
  26. // Optionally echo back or handle messages
  27. };
  28. socket.OnError = error =>
  29. {
  30. Console.WriteLine("Socket error: " + error.Message);
  31. };
  32. });
  33. Console.WriteLine("WebSocket server started on ws://0.0.0.0:5000");
  34. }
  35. public void BroadcastMessage(string message)
  36. {
  37. foreach (var client in _clients)
  38. {
  39. if (client.IsAvailable)
  40. {
  41. try
  42. {
  43. client.Send(message);
  44. }
  45. catch (Exception ex)
  46. {
  47. Console.WriteLine("Error sending message: " + ex.Message);
  48. }
  49. }
  50. }
  51. }
  52. public void Stop()
  53. {
  54. foreach (var client in _clients)
  55. {
  56. client.Close();
  57. }
  58. _server.Dispose();
  59. Console.WriteLine("WebSocket server stopped.");
  60. }
  61. }