Beispiel #1
0
        private void RequestWorker(Object obj)
        {
            MyAsyncState state = obj as MyAsyncState;

            state.CurrentContext.Response.Write(FirstText());

            var message = state.CurrentContext.Request.QueryString["msg"];
            var id      = state.CurrentContext.Request.QueryString["id"];
            JavaScriptSerializer ser = new JavaScriptSerializer();

            if (message != null)
            {
                var msg = ser.Deserialize <MessageModel>(message);
                ClientProcesor.UpdateClient(state, id);

                switch (msg.Type)
                {
                case MessageType.OnOpen:
                    ClientProcesor.OnOpen(msg, state);
                    break;

                case MessageType.OnClose:
                    ClientProcesor.OnClose(state);
                    break;

                case MessageType.Broadcast:
                    ClientProcesor.SendPublicMessage(msg, state);
                    break;

                case MessageType.Join:
                    ClientProcesor.SendJoinMessage(msg, state);
                    break;

                case MessageType.Send:
                    ClientProcesor.SendPrivateMessage(msg, state);
                    break;

                case MessageType.IsTyping:
                    ClientProcesor.SayWhoIsTyping(msg, state);
                    break;

                case MessageType.IsTypingPrivate:
                    ClientProcesor.SayWhoIsTypingPrivate(msg, state);
                    break;

                case MessageType.GroopChat:
                    ClientProcesor.SendGroupMessage(msg, state);
                    break;

                case MessageType.IsTypingGroup:
                    ClientProcesor.SayWhoIsTypingGroup(msg, state);
                    break;

                case MessageType.Reconect:
                    // ClientProcesor.Reconect(state);
                    break;
                }
            }
        }
 public static void SendJoinMessage(MessageModel msg, MyAsyncState state)
 {
     Broadcast(ser.Serialize(new
     {
         Type     = MessageType.Join,
         UserName = msg.UserName,
         Value    = "Приєднався",
         Id       = msg.Id
     }), state);
 }
Beispiel #3
0
        public IAsyncResult BeginProcessRequest(HttpContext ctx, AsyncCallback cb, Object obj)
        {
            ctx.ThreadAbortOnTimeout = false;

            MyAsyncState currentAsyncState = new MyAsyncState(ctx, cb, obj);

            ThreadPool.QueueUserWorkItem(new WaitCallback(RequestWorker), currentAsyncState);

            return(currentAsyncState);
        }