To read the article online, visit http://www.4GuysFromRolla.com/webtech/041000-1.2.shtml

ASP Instant Messaging, Part 2

By Ryan S.


  • Read Part 1

  • In Part 1 we discussed some of the basic theory behind messaging. In this part, we will look at the client code. First, let us define our initial functions for getting info outta the application variable, and then displaying it on the client.

    Sub CheckForMessages(fromUserID)
      'Now you see why I do not recommend this
      'for large scale operations!
      Application.Lock
    
      aChatDB.Filter = "FromID=" & fromUserID
      If not aChatDB.EOF Then
        Do While not aChatDB.EOF
         cChatDB.AddNew
         cChatDB("ToID") = aChatDB("ToID")
         cChatDB("toName") = aChatDB("ToName")
         cChatDB("FromID") = aChatDB("FromID")
         cChatDB("FromName") = aChatDB("FromName")
         cChatDB("TimeSent") = aChatDB("TimeSent")
         cChatDB("Message") = aChatDB("Message")
         cChatDB.Update
         aChatDB.Delete
         aChatDB.MoveNext
        Loop
      End If
      Application.UnLock
    End Sub
    

    Now, I do the .Delete on the aChatDB because the sender already has it in their cChatDB, so once the recipient has it in their cChatDB, it is redundant, so eliminating it from the server reduces the memory load of the application variable. (While I recognize at this point it now exists in two separate memory addresses in regards to the two cChatDBs, or potentially more if you opt for a variant of this, to be discussed later in the article, but, each of those optimally ends in 5 minutes, whereas the application variable is much trickier to clean up if left in this state.)

    Next, we need to have code to send messages.

    Sub SendMessage(ToID, toName, Message)
      cChatDB.AddNew
      cChatDB("ToID") = ToID
      cChatDB("toName") = ToName
      cChatDB("FromID") = Session("UserID")
      cChatDB("FromName") = Session("UserName")
      cChatDB("TimeSent") = Now
    
      'remove the Server.HTMLEncode to let users send HTML
      cChatDB("Message") = Server.HTMLEncode(Message)
      cChatDB.Update
    
      Application.Lock
      aChatDB.AddNew
      aChatDB("ToID") = ToID
      aChatDB("toName") = ToName
      aChatDB("FromID") = Session("UserID")
      aChatDB("FromName") = Session("UserName")
      aChatDB("TimeSent") = Now
      aChatDB("Message") = Server.HTMLEncode(Message)
      aChatDB.Update
      Application.Unlock
    
    End Sub
    

    If you notice, I have to lock and unlock the Application variable, because I have no clue if another user is perhaps filtering on it, thus corrupting the data. Clearly then, it is obvious why this fails in larger scales.

    In Part 3 we will look at how to display the ASP messages!

  • Read Part 3
  • Read Read Part 1


  • Article Information
    Article Title: ASP Instant Messaging, Part 2
    Article Author: Ryan S.
    Published Date: Monday, April 10, 2000
    Article URL: http://www.4GuysFromRolla.com/webtech/041000-1.2.shtml


    Copyright 2017 QuinStreet Inc. All Rights Reserved.
    Legal Notices, Licensing, Permissions, Privacy Policy.
    Advertise | Newsletters | E-mail Offers