Ejemplo n.º 1
0
        public void Dispose()
        {
            //TODO: Send DISCONNECT frame.

            _socket.Close();
            State = StompConnectionStatus.DisconnectedByUser;
            ((IDisposable)_socket).Dispose();
        }
Ejemplo n.º 2
0
        public Task Connect(IDictionary <string, string> headers)
        {
            if (State != StompConnectionStatus.NeverConnected && State != StompConnectionStatus.DisconnectedByHost && State != StompConnectionStatus.DisconnectedByUser)
            {
                throw new InvalidOperationException("The current state of the connection is not Closed.");
            }

            State = StompConnectionStatus.Connecting;
            _socket.Connect();

            var connectMessage = new StompFrame(StompFrameKind.Connect, headers);

            _socket.Send(_stompSerializer.Serialize(connectMessage));

            _socket.OnMessage += HandleMessage;
            _socket.OnError   += (object sender, ErrorEventArgs e) =>
            {
                State = StompConnectionStatus.Error;
                OnError?.Invoke(this, e.Message);
            };

            _socket.OnClose += (object sender, CloseEventArgs e) =>
            {
                State = StompConnectionStatus.DisconnectedByHost;
                OnDisconnected?.Invoke(this, e.Reason);
            };

            _socket.OnOpen += (object sender, EventArgs e) =>
            {
                State = StompConnectionStatus.Connected;
                OnConnected?.Invoke(this, null);
            };

            State = StompConnectionStatus.Connected;
            return(Task.CompletedTask);
        }