Beispiel #1
0
        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;
                }
            }
        }
Beispiel #2
0
 private bool CreateConnection()
 {
     if (!Connected())
     {
         OODSSPlatformSpecifics.Get().ConnectWebSocketClientAsync(_webSocketClient, _serverUri, CancellationToken.None);
     }
     return(Connected());
 }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
        /// <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());
        }
Beispiel #5
0
 private bool Connected()
 {
     return(OODSSPlatformSpecifics.Get().WebSocketIsConnected(_webSocketClient));
 }
Beispiel #6
0
 private void PerformDisconnect()
 {
     Debug.WriteLine("Performing Disconnect");
     OODSSPlatformSpecifics.Get().DisconnectWebSocketClientAsync(_webSocketClient);
 }