/// <inheritdoc cref="LeaveAsync"/> public Task LeaveAsync(string key, IWebSocketIo webSocketIo) { return(Task.Run(() => { try { _semaphoreSlim.Wait(); if (_channels[key].Contains(webSocketIo)) { _channels[key].Remove(webSocketIo); webSocketIo.JoinedChannels.Remove(key); webSocketIo.OnLeaved(this, new WebSocketIoEventArgs(key, webSocketIo)); if (_channels[key].Count == 0) { _channels.Remove(key); } } } finally { _semaphoreSlim.Release(); } })); }
/// <inheritdoc cref="DisposeAsync"/> public Task DisposeAsync(IWebSocketIo webSocketIo) { return(Task.Run(async() => { try { await _semaphoreSlim.WaitAsync(); if (_webSocketIos.ContainsKey(webSocketIo.SocketId)) { _webSocketIos.Remove(webSocketIo.SocketId); } foreach (var channel in webSocketIo.JoinedChannels) { if (_channels.ContainsKey(channel)) { _channels[channel].Remove(webSocketIo); } } webSocketIo.JoinedChannels.Clear(); await webSocketIo.Socket.CloseAsync(WebSocketCloseStatus.EndpointUnavailable, "", CancellationToken.None); } finally { _semaphoreSlim.Release(); } })); }
/// <inheritdoc cref="LeaveAllAsync"/> public Task LeaveAllAsync(IWebSocketIo webSocketIo) { return(Task.Run(() => { try { _semaphoreSlim.Wait(); foreach (var channel in webSocketIo.JoinedChannels) { if (_channels.ContainsKey(channel)) { _channels[channel].Remove(webSocketIo); webSocketIo.OnLeaved(this, new WebSocketIoEventArgs(channel, webSocketIo)); } } webSocketIo.JoinedChannels.Clear(); } finally { _semaphoreSlim.Release(); } })); }
/// <inheritdoc cref="JoinAsync"/> public Task JoinAsync(string key, IWebSocketIo webSocketIo) { return(Task.Run(() => { try { _semaphoreSlim.Wait(); if (!_channels.ContainsKey(key)) { _channels[key] = new List <IWebSocketIo>(); } if (!_channels[key].Contains(webSocketIo)) { _channels[key].Add(webSocketIo); webSocketIo.JoinedChannels.Add(key); } } finally { _semaphoreSlim.Release(); } })); }
public TestController(IWebSocketIo webSocketIo) : base(webSocketIo) { _webSocketIo = webSocketIo; }
public WebSocketIoNoContentResult(IWebSocketIo webSocketIo) { _webSocketIo = webSocketIo; }
public JwtController(IWebSocketIo webSocketIo, IConfiguration configuration) : base(webSocketIo) { _webSocketIo = webSocketIo; _configuration = configuration; }
public WebSocketIoStatusCodeResult(IWebSocketIo webSocketIo, int statusCode) : base(statusCode) { _webSocketIo = webSocketIo; }
public WebSocketIoOkResult(IWebSocketIo webSocketIo) { _webSocketIo = webSocketIo; }
public WebSocketIoOkObjectResult(IWebSocketIo webSocketIo, object value) : base(value) { _webSocketIo = webSocketIo; }
public WebSocketIoContentResult(IWebSocketIo webSocketIo, string content) { _webSocketIo = webSocketIo; _content = content; }
public WebSocketIoController(IWebSocketIo webSocketIo) { _webSocketIo = webSocketIo; }
public ChannelsController(IWebSocketIo webSocketIo, IWebSocketIoPacket packet) : base(webSocketIo) { _webSocketIo = webSocketIo; _packet = packet; }
public WebSocketIoOkEventObjectResult(IWebSocketIo webSocketIo, string emitName, object value) : base(webSocketIo, value) { _webSocketIo = webSocketIo; _emitName = emitName; }
/// <inheritdoc cref="OnDisconnected"/> public virtual void OnDisconnected(object sender, IWebSocketIo webSocketIo) { Disconnected?.Invoke(sender, webSocketIo); }
public WebSocketIoEventArgs(string channelKey, IWebSocketIo webSocketIo) { ChannelKey = channelKey; WebSocketIo = webSocketIo; }
/// <inheritdoc cref="Add"/> public void Add(Guid guid, IWebSocketIo socket) { _webSocketIos.Add(new KeyValuePair <Guid, IWebSocketIo>(guid, socket)); }
/// <summary> /// 클라이언트에게 객체를 전송합니다. /// </summary> /// <param name="webSocketIo"><see cref="IWebSocketIo"/></param> /// <param name="obj">객체 입니다.</param> /// <param name="endOfMessage">메시지의 끝인지 아닌지의 여부 입니다.</param> /// <param name="cancellationToken"><see cref="CancellationToken"/> 입니다.</param> public static Task SendDataAsync(this IWebSocketIo webSocketIo, object obj, bool endOfMessage = true, CancellationToken cancellationToken = default(CancellationToken)) { return(webSocketIo.SendDataAsync(obj, endOfMessage, cancellationToken)); }
public BroadcastBuilder(IWebSocketIo webSocketIo, IWebSocketIoConnectionManager webSocketIoConnectionManager) { _webSocketIo = webSocketIo; _webSocketIoConnectionManager = webSocketIoConnectionManager; }