5 系统实现 5.1 发送消息功能实现 paper51.com 为了实现发送消息的功能,在服务器端代码中需要定义Ajax方法SendMessage,具体代码如下: paper51.com 内容来自论文无忧网 www.paper51.com [AjaxMethod()] http://www.paper51.com public void SendMessage(string strUsername, string strContent) 内容来自www.paper51.com
{ 内容来自www.paper51.com // 数据连接 http://www.paper51.com SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["ConnStr"]); copyright paper51.com
// SQL命令 paper51.com SqlCommand cmd = conn.CreateCommand(); 内容来自www.paper51.com cmd.CommandText = string.Format("SendMessage '{0}','{1}', '{2}'", 内容来自www.paper51.com User.Identity.Name, strUsername, strContent); copyright paper51.com try 内容来自论文无忧网 www.paper51.com { http://www.paper51.com // 打开数据连接 http://www.paper51.com conn.Open(); http://www.paper51.com
// 执行SQL,发送消息 http://www.paper51.com cmd.ExecuteNonQuery(); copyright paper51.com } copyright paper51.com catch (SqlException) 内容来自论文无忧网 www.paper51.com
{ 内容来自论文无忧网 www.paper51.com
} 内容来自www.paper51.com finally 内容来自www.paper51.com { 内容来自www.paper51.com // 关闭连接 copyright paper51.com
conn.Close(); 内容来自论文无忧网 www.paper51.com
} paper51.com
然后在客户端编写getMessage函数,调用服务器Ajax方法进行消息的发送。 内容来自论文无忧网 www.paper51.com getMessage函数的代码如下: paper51.com 5.2 接收消息功能实现 http://www.paper51.com 为了实现接收消息的功能,在服务器端代码中需要定义Ajax方法GetNewMessage,具体代码如下: http://www.paper51.com 内容来自论文无忧网 www.paper51.com [AjaxMethod()] 内容来自论文无忧网 www.paper51.com
public DataSet GetNewMessage() 内容来自论文无忧网 www.paper51.com { 内容来自论文无忧网 www.paper51.com
// 返回的数据集 copyright paper51.com
DataSet ds = new DataSet(); 内容来自论文无忧网 www.paper51.com // 数据连接 paper51.com SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["ConnStr"]); 内容来自www.paper51.com // SQL命令 内容来自论文无忧网 www.paper51.com SqlCommand cmd = conn.CreateCommand(); 内容来自www.paper51.com // 数据适配器 内容来自论文无忧网 www.paper51.com SqlDataAdapter da = new SqlDataAdapter(cmd); copyright paper51.com try 内容来自www.paper51.com
{ 内容来自论文无忧网 www.paper51.com // 向DataSet中填充消息数据 http://www.paper51.com
da.Fill(ds); 内容来自论文无忧网 www.paper51.com
然后在客户端编写getNewMessage函数,调用服务器Ajax方法进行消息的发送。getNewMessage函数的代码如下: 内容来自www.paper51.com
内容来自www.paper51.com function getNewMessage() 内容来自论文无忧网 www.paper51.com
{ 内容来自论文无忧网 www.paper51.com // 用户名 paper51.com var username = document.location.search.split('=')[1]; copyright paper51.com // 消息显示区域 内容来自www.paper51.com var div_recentMsg = el("recentMsg"); http://www.paper51.com // 获取最新消息的数据表 copyright paper51.com var dt = ch111.SendMsg.GetNewMessage().value.Tables[0]; copyright paper51.com for (var i = 0;i < dt.Rows.length;i++) paper51.com { paper51.com // 一条消息对应与一个<span>对象 http://www.paper51.com var oneMsg = document.createElement("span"); paper51.com // 消息发送者与发送对象 paper51.com var strLine1 = dt.Rows[i].sender + "说: (" + dt.Rows[i].sendtime + ")"; http://www.paper51.com strLine1 = DealBrackets(strLine1); paper51.com
// 消息内容 内容来自论文无忧网 www.paper51.com var strLine2 = dt.Rows[i].content; paper51.com strLine2 = DealBrackets(strLine2); 内容来自www.paper51.com // 显示样式 copyright paper51.com oneMsg.innerHTML = "<pre>" + strLine1 + "<br> " http://www.paper51.com + strLine2 + "</pre>"; 内容来自www.paper51.com
http://www.paper51.com
内容来自www.paper51.com
paper51.com oneMsg.style.padding = "2px 2px 2px 2px"; 内容来自www.paper51.com oneMsg.style.color = (dt.Rows[i].sender == username) ? "blue" : "red"; copyright paper51.com oneMsg.style.fontFamily = "'Courier New' , 宋体"; http://www.paper51.com // 附加到DOM 内容来自论文无忧网 www.paper51.com div_recentMsg.appendChild(oneMsg); 内容来自www.paper51.com } copyright paper51.com } http://www.paper51.com paper51.com // 主进程循环 内容来自www.paper51.com function mainLoop() 内容来自www.paper51.com { copyright paper51.com // 获取新消息 copyright paper51.com getNewMessage(); paper51.com // 每隔1秒检查一次 http://www.paper51.com
setTimeout("mainLoop()", 1000); paper51.com
} 内容来自论文无忧网 www.paper51.com
http://www.paper51.com
// 显示最近的消息 内容来自www.paper51.com getRecentMsg(); paper51.com // 定时更新消息列表 内容来自www.paper51.com mainLoop(); paper51.com |