65.9K
CodeProject 正在变化。 阅读更多。
Home

一个简单的 ASP.NET 聊天程序

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.90/5 (21投票s)

2007年2月19日

CPOL

2分钟阅读

viewsIcon

458490

downloadIcon

5017

一个使用 ASP.NET 的简单聊天应用程序。

引言

本文档描述了如何创建一个聊天应用程序。在这个应用程序中,总共使用了六个页面。

主页

此页面有三个框架。第一个框架将显示用户信息和输入的聊天消息(左侧)。右侧框架将显示当前在线用户数量及其姓名。框架的底部将显示一个文本框和一个注销按钮。

有三种类型的对象用于存储用户信息和数据

  • Session
  • Cookie
  • Application

Session 对象用于在服务器端存储特定用户的相关信息。Cookies 对象用于在特定客户端存储特定用户的相关信息。并且,Application 对象可以在网络中使用。

在这个应用程序中,我使用了 Session 对象来进行登录验证。

session("UserName")=txtUserName.text

这将在服务器端创建一个 Session 对象。我们可以使用这个 object.(Authentication) 来验证用户的凭据。

在验证用户的凭据后,应用程序对象将创建如下:

Application("Chat")=Application("Chat") & name & "$"

如果用户在文本框中输入内容,表单将被刷新,并且 Application("chat") 的值将更改为新值,并且 Application("chat") 数组的列表将显示在主显示页面上。

用户的输入将使用 meta HTTP 对象中的自动刷新方法来显示。

<meta http-equiv="refresh" content="4">

这将使页面刷新。

用户列表

Application("Users") 用于计算在线用户数量。计数是通过分割 application("users") 中的特殊字符来获取的。

Screenshot - chat.png

Logout

这个注销页面用于清除用户的会话,并从 application("users") 中删除用户名。因此,用户可以从聊天中关闭他的会话。对于私聊,application(user & session("user")) 用于区分其他用户和当前用户。

主页的左侧显示所有用户;当我们点击一个用户时,私聊页面将显示一个包含请求用户的新页面。

if Con.State = ConnectionState.Open Then Con.Close()
Con.Open()
name = rdname(0)
Con.State = ConnectionState.Open Then Con.Close()Dim cmd_name As New SqlCommand(
   "Select Emp_Name From UserAccounts_Master Where UserId = '" & Session("UserId") & "'",
   Con)Dim rdname As SqlDataReader = cmd_name.ExecuteReaderWhile rdname.ReadEnd While 
rdname.Close()
If name <> "" Then If Application("invite") = name Then 
Response.Write("<script language="'javascript'">{ window.alert(
    '" & Application("invite") & "," & Application("whom") & " invited you to chat') } 
</script>")
Application("invite") = " "
'Dim focusString As String = ("<script language="'javascript'">{ window.alert(
   '" & Application("invite") & "," & Application("whom") & " invited you to chat') }
</script>") 'Page.RegisterStartupScript("FocusScript",
    focusString) 'Session.Timeout = 20000 End If End If 
rdname.Close()
Con.Close()

试试看。谢谢!

© . All rights reserved.