aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/WebSocket/FleckServer.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-09-05 17:34:46 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-09-05 17:34:46 -0400
commit98e7eeeff933d6f5ba18daecb3931337523dc01b (patch)
tree4ff3bec38ad3c9cffa74787aa51aa928ec3e2ab6 /MediaBrowser.Server.Implementations/WebSocket/FleckServer.cs
parent44b12c0f9fc81dd10d6f655f341d7df28c5f3e20 (diff)
reduce byte conversions with alchemy web socket
Diffstat (limited to 'MediaBrowser.Server.Implementations/WebSocket/FleckServer.cs')
-rw-r--r--MediaBrowser.Server.Implementations/WebSocket/FleckServer.cs54
1 files changed, 54 insertions, 0 deletions
diff --git a/MediaBrowser.Server.Implementations/WebSocket/FleckServer.cs b/MediaBrowser.Server.Implementations/WebSocket/FleckServer.cs
new file mode 100644
index 000000000..2c47a366e
--- /dev/null
+++ b/MediaBrowser.Server.Implementations/WebSocket/FleckServer.cs
@@ -0,0 +1,54 @@
+using Fleck;
+using MediaBrowser.Common.Net;
+using System;
+using IWebSocketServer = MediaBrowser.Common.Net.IWebSocketServer;
+
+namespace MediaBrowser.Server.Implementations.WebSocket
+{
+ public class FleckServer : IWebSocketServer
+ {
+ private WebSocketServer _server;
+
+ public void Start(int portNumber)
+ {
+ var server = new WebSocketServer("ws://localhost:" + portNumber);
+
+ server.Start(socket =>
+ {
+ socket.OnOpen = () => OnClientConnected(socket);
+ });
+
+ _server = server;
+ }
+
+ public void Stop()
+ {
+ _server.Dispose();
+ }
+
+ private void OnClientConnected(Fleck.IWebSocketConnection context)
+ {
+ if (WebSocketConnected != null)
+ {
+ var socket = new FleckWebSocket(context);
+
+ WebSocketConnected(this, new WebSocketConnectEventArgs
+ {
+ WebSocket = socket,
+ Endpoint = context.ConnectionInfo.ClientIpAddress + ":" + context.ConnectionInfo.ClientPort
+ });
+ }
+ }
+ public event EventHandler<WebSocketConnectEventArgs> WebSocketConnected;
+
+ public int Port
+ {
+ get { return _server.Port; }
+ }
+
+ public void Dispose()
+ {
+ _server.Dispose();
+ }
+ }
+}