예제 #1
0
        public string GetSession(string username, string password, bool disconnectOnClose)
        {
            var    key = Encrypt(username, password);
            Talker talker;

            if (!Global.Sessions.TryGetValue(key, out talker))
            {
                Trace.TraceInformation("New talker! " + key);
                var talk          = new TalkLib.Talk(username, password);
                var talkerFactory = Kernel.Get <TalkerFactory>();
                talker                   = talkerFactory.CreateTalker(talk, Clients.Group(key));
                talker.Disconnect       += (sender, args) => Global.Sessions.TryRemove(key, out talker);
                talker.DisconnectOnClose = disconnectOnClose;
            }

            talker.Disconnect += (sender, args) =>
            {
                Global.Sessions.TryRemove(Context.ConnectionId, out talker);
                Groups.Remove(Context.ConnectionId, key);
            };

            Global.Sessions[Context.ConnectionId] = Global.Sessions[key] = talker;

            return(key);
        }
예제 #2
0
파일: Talker.cs 프로젝트: eirikb/Talk
 public Talker(TalkLib.Talk talk, dynamic caller, List <ITalk> handlers)
 {
     _handlers = handlers;
     _talk     = talk;
     _caller   = caller;
     Chats     = new ChatManager();
     Users     = new UserManager();
 }