chatservice.ashx

来自「ajax+visalsdio2005实现的聊天室程序」· ASHX 代码 · 共 94 行

ASHX
94
字号
<%@ WebHandler Language="C#" Class="ChatService" %>

using System;
using System.Web;
using System.Text;
using System.Web.Security;
using Cnblogs.Ajax;

public class ChatService : IHttpHandler {
    
    public void ProcessRequest (HttpContext context)
    {
        context.Response.ContentType = "text/plain";
		string action = context.Request.Params["action"];

		string userName = context.User.Identity.Name;

		if (!ChatRoom.Instance.UserIsChatting(userName))
		{
			FormsAuthentication.SignOut();
			context.Response.Write(
				"<script language='javascript'>location.href='Login.aspx';</script>");
		}
		else if (action == "send")
		{
			this.SendMessage(context);
		}
		else if (action == "users")
		{
			this.GetUsers(context);
		}
		else if (action == "get")
		{
			this.GetMessages(context);
		}
		else
		{
			this.UpdateUser(context);
		}

		context.Response.Flush();
		context.Response.Close();
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }

	private void SendMessage(HttpContext context)
	{
		string message = context.Request.Params["msg"];
		string userName = context.User.Identity.Name;

		ChatRoom.Instance.SendMessage(userName, message);
	}

	private void GetUsers(HttpContext context)
	{
		StringBuilder sb = new StringBuilder("<ul>", 300);
		
		foreach (ChattingUser user in ChatRoom.Instance.GetAllUsers())
		{
			sb.Append("<li>" + context.Server.HtmlEncode(user.Name) + "</li>");
		}

		sb.Append("</ul>");
		
		context.Response.Write(sb.ToString());
	}

	private void GetMessages(HttpContext context)
	{
		StringBuilder sb = new StringBuilder(3000);

		foreach (ChatMessage chatMessage in ChatRoom.Instance.GetAllMessages())
		{
			string encodedUserName = context.Server.HtmlEncode(chatMessage.UserName);
			string encodedMessage = context.Server.HtmlEncode(chatMessage.Message);

			sb.Append("<b>" + encodedUserName + ": </b>" + encodedMessage + "<br />");
		}

		context.Response.Write(sb.ToString());
	}

	private void UpdateUser(HttpContext context)
	{
		string userName = context.User.Identity.Name;
		ChatRoom.Instance.GetUser(userName).Update();
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?