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); }
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); }