前些日子,在网上看到好多WEB网站即时消息的例子,大都是XML做的,无奈对于我这个跑的慢的人(XML看了一个月,还是没搞明白怎么用
),只好望而兴叹了。没办法只能从C#的角落里把Application再揪出来用用了.(尽管听他们说实现的效率比WebService差很多) 。呵呵,废话不说了,不过在高手面前班门弄斧还是有点脸红的,呵呵.
(1) 存入用户列表
把用户名存入Application
代码如下:
string User=Server.UrlDecode(Request.QueryString["User"]);
Session["UserName"]=User;
Application["OnlineUser"]+=Session["UserName"].ToString()+",";
Response.Write("<SCRIPT>window.open('index.aspx','','left=800,scrollbars=yes,width=200,height=500');</SCRIPT>");
(2) 建框架页(index.aspx)
10秒钟自动刷新
TOPframe页
隐藏该框架,负责弹出消息框
Application[“message”]为客户留言内容,在发送留言页面对其赋值;
UserNameList提取接收人变量;
代码如下:
try
{
if(Application["message"]!="")
{
string UserNameList=this.Application["message"].ToString().Substring(this.Application["message"].ToString().IndexOf("对")+1,(this.Application["message"].ToString().IndexOf("说")-this.Application["message"].ToString().IndexOf("对")-1));
if (Session["UserName"].ToString()==UserNameList)
{
Response.Write("<SCRIPT>window.open('messagelist.aspx','','left=400,top=400,scrollbars=yes,width=400,height=300');</SCRIPT>");
}
}
}
catch
{}
mainframe页:
显示客服人员列表:
注意:在这里要判断一下,如果是客服人员则显示.
如果是客户则不显示,客户记录Session["UserName"]时,用当前时间+随机数.在客户点击相应客服人员时把其存入Application用户列表,在这里不多叙述.
代码如下:
string [] abc=Application["OnlineUser"].ToString().Split(',');
Label1.Text="在线人数列表:<br>";
for(int i=0;i<abc.Length;i++)
{
string UserList=abc[i].ToString();
Label1.Text+="<a href=# onclick=window.open('send.aspx?User="+UserList+"','','left=400,top=400,scrollbars=yes,width=400,height=200');>"+abc[i].ToString()+"</a><br>";
}
(3) 客户向客服发送消息:
此页与TOPFRAME页构成一收一发.
Application["message"]=Session["UserName"]+"对"+User+"说:<br>"+message.Text;
Response.Write("<script>alert('发送成功!');window.close();</script>");
(4)接受消息与回复(messagelist.aspx)
显示接收消息后,把消息清空
if(!Page.IsPostBack)
{
Label1.Text=Application["message"].ToString();
User1=Application["message"].ToString().Substring(0,Application["message"].ToString().IndexOf("对"));
Label2.Text=User1;
Application["message"]="";
}
回复发送人:
string User111=Label2.Text;
Application["message"]=Session["UserName"]+"对"+User111+"说:<br>"+message.Text;
Response.Write("<script>alert('发送成功!');window.close();</script>");
以上仅供为大家提供一个思路,还望高人多多指点.