123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- 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();
- }
- }
- }
|