示例#1
0
        public async Task SendMessageToAsync(string eventName, WebSocketMessageArgs eventArgs, Predicate <string> filter)
        {
            var sockets = WebSocketConnectionManager
                          .GetAll()
                          .Where(it => filter(it.Key));

            foreach (var pair in sockets)
            {
                if (pair.Value.State == WebSocketState.Open)
                {
                    await SendMessageAsync(pair.Value, eventName, eventArgs);
                }
            }
        }
示例#2
0
        public async Task SendMessageAsync(WebSocket socket, string eventName, WebSocketMessageArgs eventArgs)
        {
            if (socket.State != WebSocketState.Open)
            {
                return;
            }

            var message = new WebSocketMessage
            {
                Event = eventName,
                Data  = JsonConvert.SerializeObject(eventArgs)
            };

            var stringMessage = JsonConvert.SerializeObject(message);

            await socket.SendAsync(buffer : new ArraySegment <byte>(array: Encoding.ASCII.GetBytes(stringMessage),
                                                                    offset: 0,
                                                                    count: stringMessage.Length),
                                   messageType : WebSocketMessageType.Text,
                                   endOfMessage : true,
                                   cancellationToken : CancellationToken.None);
        }
示例#3
0
 public abstract Task ReceiveAsync(WebSocket socket, WebSocketReceiveResult result, string eventName, WebSocketMessageArgs eventArgs);
示例#4
0
 public async Task SendMessageToAllAsync(string eventName, WebSocketMessageArgs eventArgs)
 {
     await SendMessageToAsync(eventName, eventArgs, it => true);
 }
示例#5
0
 public async Task SendMessageAsync(string socketId, string eventName, WebSocketMessageArgs eventArgs)
 {
     await SendMessageAsync(WebSocketConnectionManager.GetSocketById(socketId), eventName, eventArgs);
 }
示例#6
0
        public override async Task ReceiveAsync(WebSocket socket, WebSocketReceiveResult result, string eventName, WebSocketMessageArgs eventArgs)
        {
            var socketId = WebSocketConnectionManager.GetId(socket);

            switch (eventName)
            {
            case WebSocketEvent.UnitState:
                await SendMessageToAllAsync(eventName, eventArgs);

                break;

            default:
                break;
            }
        }