private async void WebSocketDataReceiver() { while (_isRunning && !_cancellationTokenSource.Token.IsCancellationRequested) { try { // websocket client receive data from stream byte[] incomingData = await OODSSPlatformSpecifics.Get() .ReceiveMessageFromWebSocketClientAsync( _webSocketClient, _readBuffer, _cancellationTokenSource.Token); // process the byte data long uid = BitConverter.ToInt64(incomingData, 0); string message = Encoding.UTF8.GetString(incomingData, 8, incomingData.Length - 8); Debug.WriteLine("Got the message: " + message + " uid: " + uid); ProcessString(message, uid); } catch (OperationCanceledException e) { Debug.WriteLine("DataReceiver: The operation was cancelled." + e.CancellationToken); break; } catch (Exception e) { Debug.WriteLine("DataReceiver: The operation was cancelled."); break; } } }
private bool CreateConnection() { if (!Connected()) { OODSSPlatformSpecifics.Get().ConnectWebSocketClientAsync(_webSocketClient, _serverUri, CancellationToken.None); } return(Connected()); }
/// <summary> /// prepare the message and send it to the websocket server /// </summary> /// <param name="requestObject"></param> private async Task CreatePacketFromMessageAndSend(RequestQueueObject requestObject) { long uid = requestObject.Uid; string requestString = GenerateStringFromRequest(requestObject.RequestMessage); byte[] uidBytes = BitConverter.GetBytes(uid); byte[] messageBytes = Encoding.UTF8.GetBytes(requestString); byte[] outMessage = new byte[uidBytes.Length + messageBytes.Length]; Buffer.BlockCopy(uidBytes, 0, outMessage, 0, uidBytes.Length); Buffer.BlockCopy(messageBytes, 0, outMessage, uidBytes.Length, messageBytes.Length); await OODSSPlatformSpecifics.Get().SendMessageFromWebSocketClientAsync(_webSocketClient, outMessage); }
/// <summary> /// Starting the client, setting up the websocketclient /// </summary> public async Task <bool> StartAsync() { _isRunning = true; _cancellationTokenSource = new CancellationTokenSource(); //_cancellationTokenSource.Token.Register(PerformDisconnect); String uri = WebSocketPrefix + ServerAddress + ":" + PortNumber; // create and connect _webSocketClient = OODSSPlatformSpecifics.Get().CreateWebSocketClientObject(); // connect to the server await OODSSPlatformSpecifics.Get().ConnectWebSocketClientAsync(_webSocketClient, new Uri(uri), _cancellationTokenSource.Token); OODSSPlatformSpecifics.Get().CreateWorkingThreadAndStart(SendMessageWorker, ReceiveMessageWorker, WebSocketDataReceiver, _cancellationTokenSource.Token); return(await ConnectOODSSServerAsync()); }
private bool Connected() { return(OODSSPlatformSpecifics.Get().WebSocketIsConnected(_webSocketClient)); }
private void PerformDisconnect() { Debug.WriteLine("Performing Disconnect"); OODSSPlatformSpecifics.Get().DisconnectWebSocketClientAsync(_webSocketClient); }