Exemple #1
0
 public void RemoveGroup(string groupName, IHttpListenerWebSocketContext context)
 {
     if (groups.TryGetValue(groupName, out List <IHttpListenerWebSocketContext> _ctxs))
     {
         _ctxs.RemoveAll(f => f.SecWebSocketKey == context.SecWebSocketKey);
     }
 }
Exemple #2
0
 private async Task OnBeforeDisconnected(IHttpListenerWebSocketContext context)
 {
     if (context.WebSocket.State == WebSocketState.Connecting || context.WebSocket.State == WebSocketState.Open)
     {
         context.WebSocket.Abort();
     }
     await OnDisconnected(context);
 }
Exemple #3
0
        public async Task SendToOther(IHttpListenerWebSocketContext context, string message, bool endOfMessage = true)
        {
            var otherClients = clients
                               .Where(f => f.Key != context.SecWebSocketKey)
                               .Select(f => f.Value)
                               .ToList();

            foreach (var otherContext in otherClients)
            {
                await Send(otherContext, message, endOfMessage);
            }
        }
Exemple #4
0
 public async Task Send(IHttpListenerWebSocketContext context, string message, bool endOfMessage = true)
 {
     try
     {
         byte[] buffer = new byte[options.BufferSize];
         buffer = Encoding.UTF8.GetBytes(message);
         await context.WebSocket.SendAsync(buffer, WebSocketMessageType.Text, endOfMessage, new CancellationToken());
     }
     catch (WebSocketException)
     {
         OnBeforeDisconnected(context);
     }
 }
Exemple #5
0
 public void AddGroup(string groupName, IHttpListenerWebSocketContext context)
 {
     if (groups.ContainsKey(groupName))
     {
         if (groups.TryGetValue(groupName, out List <IHttpListenerWebSocketContext> _ctxs))
         {
             _ctxs.Add(context);
         }
     }
     else
     {
         var ctxs = new List <IHttpListenerWebSocketContext>()
         {
             context
         };
         groups.TryAdd(groupName, ctxs);
     }
 }
Exemple #6
0
        public override async Task OnMessage(IHttpListenerWebSocketContext context, string message)
        {
            var queries = message.Split('?', '&').ToList();

            queries.RemoveAll(f => string.IsNullOrEmpty(f));
            var firstQueryValue  = queries[0].Split('=')[1];
            var secondQueryValue = queries[1].Split('=')[1];
            var clientMessage    = string.Empty;

            if (queries.Count == 3)
            {
                clientMessage = queries[2].Split('=')[1];
            }
            secondQueryValue = System.Web.HttpUtility.UrlDecode(secondQueryValue);
            switch (firstQueryValue)
            {
            case "AddGroup":
                AddGroup(secondQueryValue, context);
                break;

            case "RemoveGroup":
                RemoveGroup(secondQueryValue, context);
                break;

            case "SendGroup":
                SendToGroup(secondQueryValue, clientMessage, true);
                break;

            case "SendOther":
                SendToOther(context, clientMessage, true);
                break;

            case "Send":
                Send(context, clientMessage, true);
                break;

            default:
                break;
            }
            Console.WriteLine(context.SecWebSocketKey + ":" + message);
        }
Exemple #7
0
 public override async Task OnDisconnected(IHttpListenerWebSocketContext context)
 {
     Console.WriteLine(context.SecWebSocketKey + " Disconnected");
 }
Exemple #8
0
 public virtual async Task OnDisconnected(IHttpListenerWebSocketContext context)
 {
 }
Exemple #9
0
 public virtual async Task OnMessage(IHttpListenerWebSocketContext context, string message)
 {
 }
Exemple #10
0
 public override Task OnConnected(IHttpListenerWebSocketContext context)
 {
     return(base.OnConnected(context));
 }
Exemple #11
0
 public override Task OnMessage(IHttpListenerWebSocketContext context, string message)
 {
     return(base.OnMessage(context, message));
 }
Exemple #12
0
 public Rocket(IHttpListenerWebSocketContext socketContext)
 {
     mSocketContext = socketContext;
     mSendLock      = new SemaphoreSlim(1, 1);
     mReceiveLock   = new SemaphoreSlim(1, 1);
 }
 public override async Task OnConnected(IHttpListenerWebSocketContext context)
 {
 }
 public override async Task OnMessage(IHttpListenerWebSocketContext context, string message)
 {
 }