在ASP.NET裏面要記錄線上使用者與線上人數的作法很多
這個做法供大家參考看看…
一。先建一個線上user的singleton
(有些會用application來記錄,小弟在這邊用singleton…)
Public Class OnLineUser
Private Shared myInstance As OnLineUser
Private al_online_user As ArrayList ' 線上使用者
Private Sub New()
al_online_user = New ArrayList ' 目前線上使用者
End Sub
Public Shared Function GetInstance() As OnLineUser
If myInstance Is Nothing Then myInstance = New OnLineUser
Return myInstance
End Function
' 取得目前線上的User
Function GetOnLineUsers() As ArrayList
Return Me.al_online_user
End Function
' 登錄線上使用者(上線)
Sub AddOnLineUser(ByVal login_user As String)
If al_online_user.IndexOf(login_user.Trim) < 0 Then
al_online_user.Add(login_user.Trim)
End If
End Sub
' 移除線上使用者(下線)
Sub RemoveOnLineUser(ByVal login_user As String)
If al_online_user.IndexOf(login_user.Trim) >= 0 Then
al_online_user.Remove(login_user.Trim)
End If
End Sub
End Class
二。[登入]使用者登入的訊息寫在Session裏面供time out時驗證用。
請在登入成功後的程式碼中加入…
Session("LoginUser") = "湯瑪的吳"
' 註冊登入者
CacheData.GetInstance.AddOnLineUser(Session("LoginUser").value)
三。[登出]在Global.asax的Session_End事件中,
將session time out 的user給登入!!!
Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
' 於工作階段結束時引發
Try
' 使用者登出系統(thoams,2005.11.28)
Dim session_id As String = Session.SessionID ' 這一行要加哦,沒加就怪怪的
Dim logout_user As String = Session("LoginUser").value
CacheData.GetInstance.RemoveOnLineUser(logout_user)
Catch ex As Exception
If Not Session("LoginUser") Is Nothing Then Session("LoginUser") = Nothing
End Try
End Sub
四。[程式中取得相關訊息]取得目前線上人數或是線上使用者
1.線上人數
CacheData.GetInstance.GetOnLineUsers.Count() ' 線上人數
2.線上使用者
Dim en_CourseData As IEnumerator = CacheData.GetInstance.GetOnLineUsers().GetEnumerator
Dim users As String
While en_CourseData.MoveNext
users+= CStr(en_CourseData.Current()) & "。"
End While
' 希望對大家有幫助
這個做法供大家參考看看…
一。先建一個線上user的singleton
(有些會用application來記錄,小弟在這邊用singleton…)
Public Class OnLineUser
Private Shared myInstance As OnLineUser
Private al_online_user As ArrayList ' 線上使用者
Private Sub New()
al_online_user = New ArrayList ' 目前線上使用者
End Sub
Public Shared Function GetInstance() As OnLineUser
If myInstance Is Nothing Then myInstance = New OnLineUser
Return myInstance
End Function
' 取得目前線上的User
Function GetOnLineUsers() As ArrayList
Return Me.al_online_user
End Function
' 登錄線上使用者(上線)
Sub AddOnLineUser(ByVal login_user As String)
If al_online_user.IndexOf(login_user.Trim) < 0 Then
al_online_user.Add(login_user.Trim)
End If
End Sub
' 移除線上使用者(下線)
Sub RemoveOnLineUser(ByVal login_user As String)
If al_online_user.IndexOf(login_user.Trim) >= 0 Then
al_online_user.Remove(login_user.Trim)
End If
End Sub
End Class
二。[登入]使用者登入的訊息寫在Session裏面供time out時驗證用。
請在登入成功後的程式碼中加入…
Session("LoginUser") = "湯瑪的吳"
' 註冊登入者
CacheData.GetInstance.AddOnLineUser(Session("LoginUser").value)
三。[登出]在Global.asax的Session_End事件中,
將session time out 的user給登入!!!
Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
' 於工作階段結束時引發
Try
' 使用者登出系統(thoams,2005.11.28)
Dim session_id As String = Session.SessionID ' 這一行要加哦,沒加就怪怪的
Dim logout_user As String = Session("LoginUser").value
CacheData.GetInstance.RemoveOnLineUser(logout_user)
Catch ex As Exception
If Not Session("LoginUser") Is Nothing Then Session("LoginUser") = Nothing
End Try
End Sub
四。[程式中取得相關訊息]取得目前線上人數或是線上使用者
1.線上人數
CacheData.GetInstance.GetOnLineUsers.Count() ' 線上人數
2.線上使用者
Dim en_CourseData As IEnumerator = CacheData.GetInstance.GetOnLineUsers().GetEnumerator
Dim users As String
While en_CourseData.MoveNext
users+= CStr(en_CourseData.Current()) & "。"
End While
' 希望對大家有幫助
全站熱搜
留言列表