public async Task DispatchAsync(WebSocketManager manager) { WebSocket socket = await manager.AcceptWebSocketAsync(); SafeSocket commonSocket = new SafeSocket(socket); Task[] senderTasks = new Task[this.senders.Count]; for (int senderIndex = 0; senderIndex < senderTasks.Length; senderIndex++) { int index = senderIndex;// careful at index ! , make copy and use it inside closure ! senderTasks[senderIndex] = Task.Run(async () => { await commonSocket.ReadAsync(); }); } }
public async Task SendCommand(string data) { var cmd = CRCHelper.StringToByteArray(data.Replace(" ", "")); var str = BitConverter.ToString(cmd, 0, cmd.Length).Replace("-", " "); _logger.LogInformation("SendCmd : " + str); using (var socket = SafeSocket.ConnectSocket(remoteEP)) { await SendAsync(socket, cmd, 0, cmd.Length, 0).ConfigureAwait(false); var response = await ReceiveAsync(socket); if (_curtainHelper != null) { await _curtainHelper.OnReceiveData(response); } } }
public async Task <string> SendCommand(string data, bool log = true) { try { var cmd = StringToByteArray(data.Replace(" ", "")); var cmdCRC = CRCHelper.get_CRC16_C(cmd); var cmd1 = new byte[cmd.Length + 2]; cmd.CopyTo(cmd1, 0); cmdCRC.CopyTo(cmd1, cmd.Length); var str = CRCHelper.byteToHexStr(cmd1, cmd1.Length); if (log) { _logger.Info("SendCmd : " + str); } using (var socket = SafeSocket.ConnectSocket(remoteEP)) { var ret = await SendAsync(socket, cmd1, 0, cmd1.Length, 0).ConfigureAwait(false); var response = await ReceiveAsync(socket); if (log) { _logger.Info("Cmd Receive : " + response); } if (_helper != null) { await _helper.OnReceiveCommand(response); } return(response); } } catch (Exception ex) { _logger.Info("err data:" + data); _logger.Error(ex.ToString()); return(string.Empty); } }
public async Task SendCommand(string data, bool debug = false) { try { var cmd = StringToByteArray(data.Replace(" ", "")); var cmdCRC = CRCHelper.Checksum(cmd); var cmd1 = new byte[cmd.Length + 1]; cmd.CopyTo(cmd1, 0); cmd1[cmd.Length] = (byte)cmdCRC; var str = BitConverter.ToString(cmd1, 0, cmd1.Length).Replace("-", " "); if (debug) { _logger.LogInformation("SendCmd : " + str); } using (var s = SafeSocket.ConnectSocket(remoteEP)) { var ret = await SendAsync(s, cmd1, 0, cmd1.Length, 0).ConfigureAwait(false); var response = await ReceiveAsync(s); if (debug) { _logger.LogInformation("Receive : " + response); } if (!string.IsNullOrWhiteSpace(response) && !string.IsNullOrEmpty(response)) { await _helper.OnReceiveData(response); } } } catch (Exception ex) { _logger.LogError("err data: " + data); _logger.LogError(ex.ToString()); } }