Ejemplo n.º 1
0
using PE.Plugins.PubnubChat.Models;

using PubnubApi;

using System;

namespace PE.Plugins.PubnubChat
{
    public enum ChatState
    {
        None,
        Waiting,
        Typing,
        InCall
    }

    public class ChatService : IChatService, IDisposable
    {
        #region Events

        public event InitializationChangedEventHandler InitializedChanged;
        public event EventHandler ConnectedChanged;
        public event EventHandler<MessageEventArgs> MessageReceived;
        public event EventHandler<PresenceEventArgs> ChannelJoined;
        public event EventHandler<PresenceEventArgs> ChannelLeft;
        public event EventHandler<PresenceEventArgs> ChannelTimeout;
        public event EventHandler<PresenceEventArgs> ChannelState;
        public event EventHandler<MessageEventArgs> PublishComplete;

        #endregion Events

        #region Fields

        private Pubnub _Pubnub;

        private readonly string _PublishKey = string.Empty;
        private readonly string _SubscribeKey = string.Empty;

        private SubscribeCallbackExt _ListenerSubscribeCallack;

        private string _UserId = string.Empty;
        private string _AuthKey = string.Empty;
        private bool _Disposed = false;

        private int _FailCount = 0;

        private string _PushData = string.Empty;

        #endregion Fields

        #region Constructors

        public ChatService(ChatConfiguration configuration)
        {
            _PublishKey = configuration.PublishKey;
            _SubscribeKey = configuration.SubscribeKey;
        }

        ~ChatService()
        {
            Dispose();
        }

        #endregion Constructors

        #region Properties

        public bool Connected { get; private set; }

        public bool Initialized { get; private set; } = false;

        #endregion Properties

        #region Init

        public void Initialize(string userId, string authKey = null, bool reset = true, string push = "")
        {
Ejemplo n.º 2
0
 public ChatService(ChatConfiguration configuration)
 {
     _PublishKey   = configuration.PublishKey;
     _SubscribeKey = configuration.SubscribeKey;
 }