public void ConnectAsync(Uri uri, System.Threading.CancellationToken cancel)
 {
     Task.Run(() =>
     {
         try
         {
             ws.ConnectAsync(uri, cancel);
             if (ws.State == WebSocketState.Open)
             {
                 MessageEventArg arg = new MessageEventArg();
                 arg.message         = "Connection Established";
                 OnConnect(this, arg);
                 RecieveAsync(cancel);
             }
         }
         catch (WebSocketException ex)
         {
             ErrorEventArg arg   = new ErrorEventArg();
             arg.time            = DateTime.Now;
             arg.socketState     = ws.State;
             arg.socketException = ex;
             OnError(this, arg);
         }
     }, cancel);
 }
 void callback3(object sender, MessageEventArg e)
 {
     Thread.Sleep(2000);
     Invoke((MethodInvoker)delegate
     {
         richTextBox1.Text += e.Message + "\n";
     });
 }
        private async void RecieveAsync(System.Threading.CancellationToken cancel)
        {
            try
            {
                ArraySegment <byte>    buffer = new ArraySegment <byte>(new byte[10000]);
                WebSocketReceiveResult result = await ws.ReceiveAsync(buffer, cancel);

                if (ws.State == WebSocketState.CloseReceived)
                {
                    MessageEventArg arg = new MessageEventArg();
                    arg.time = DateTime.Now;
                    if (ws.CloseStatusDescription != "")
                    {
                        arg.message = ws.CloseStatusDescription;
                    }
                    else
                    {
                        arg.message = "Websocket closed";
                    }

                    OnClose(this, arg);
                }
                else
                {
                    MessageEventArg arg = new MessageEventArg();
                    if (result.Count != 0 || result.CloseStatus == WebSocketCloseStatus.Empty)
                    {
                        arg.time = DateTime.Now;
                        string message = Encoding.ASCII.GetString(buffer.Array,
                                                                  buffer.Offset, result.Count);
                        arg.message = message;
                        OnReceive(this, arg);
                        RecieveAsync(cancel);
                    }
                }
            }
            catch (WebSocketException ex)
            {
                ErrorEventArg arg = new ErrorEventArg();
                arg.time            = DateTime.Now;
                arg.socketState     = ws.State;
                arg.socketException = ex;
                OnError(this, arg);
            }
        }
示例#4
0
        private void OnTcpConnection_MessageReceived(object sender, MessageEventArg e)
        {
            //filter out all none jpg messages
            if (!(e.Message is JpgMessage))
            {
                return;
            }


            //enqueue image into opponent video queue
            JpgMessage msg = e.Message as JpgMessage;

            //extract images
            Image image = msg.GetImage();

            m_taskManager.EnqueueOpponent(image);
            msg.DisposeImage();

            //asyn invalidation
            this.Invalidate();
        }
 protected void OnOperationFinished(MessageEventArg e)
 {
     //##### Method1 - Event raised on the same thread ##### 
     //EventHandler<MessageEventArg> handler = OperationFinished;
     //if (handler != null)
     //{
     //    handler(this, e);
     //}
     //##### Method2 - Event raised on (the same) separate thread for all listener #####
     //EventHandler<MessageEventArg> handler = OperationFinished;
     //if (handler != null)
     //{
     //    Task.Factory.StartNew(() => handler(this, e));
     //}
     //##### Method3 - Event raised on different threads for each listener #####
     if (OperationFinished != null)
     {
         foreach (EventHandler<MessageEventArg> handler in OperationFinished.GetInvocationList())
         {
             Task.Factory.FromAsync((asyncCallback, @object) => handler.BeginInvoke(this, e, asyncCallback, @object), handler.EndInvoke, null);
         }
     }
 }
 private void _reader_ReadMessageCompleted(object sender, MessageEventArg e, UInt32 dataId, Func<int, IConsumerBinding> update, int length)
 {
     Assert.AreEqual<uint>(dataId, e.DataSetId);
       //  return;
       e.MessageContent.UpdateMyValues(update, length);
 }
示例#7
0
 private void _reader_ReadMessageCompleted(object sender, MessageEventArg e, UInt32 dataId, Func <int, IConsumerBinding> update, int length)
 {
     Assert.AreEqual <uint>(dataId, e.DataSetId);
     //  return;
     e.MessageContent.UpdateMyValues(update, length);
 }