2013-03-27 1 views
0

Я пытаюсь разработать приложение чата. Я использую Asp.Net2.0 и vs2005.Iam, используя AjaxPro Framework для получения asynchronous calls на сервер.AjaxPro Framework с функцией тайм-аута?

Моя проблема в том, когда я отправляю сообщение im получаю сообщение timeout через несколько секунд. Какая может быть проблема и как я ее разрешу?

Мое другое сомнение в том, что есть какая-то серьезная проблема при использовании AjaxPro Framework

Heres кода я использовал в стороне клиента для отправки сообщений

<script language="javascript"> 
      // Send messages 
     function sendMessage() 
     {    
      // input box for entering message 
      var ta_content = el("txtcontent"); 

      // if the content input is not empty 
      if (ta_content.value.length > 0) 
      { 
       //the message show area 
       var div_recentMsg = el("recentMsg");   

       var clientUname=document.getElementById("<%=hFieldClientUserName.ClientID %>").value;  

       var adminUname=document.getElementById("<%=hFieldAdminUserName.ClientID %>").value; 

       // send the message 
       AjaxProChat.SendMessage(clientUname,adminUname,ta_content.value); 

       // clear the input box 
       ta_content.value = ""; 

       // roll up the web page with the messages 
       ta_content.scrollIntoView(false); 

       getNewMessage(); 


      } 
     } 


     //Obtain the new messages 
     function getNewMessage() 
     { 
      // AjaxProChat.timeouPeriod(1800000); 
      // the user name 
      var username = document.getElementById("<%=hFieldClientUserName.ClientID %>").value;   

      // the message show area 
      var div_recentMsg = el("recentMsg"); 

      // Obtain the DataTable for the newest messages 
      var dt = AjaxProChat.GetNewMsg(username).value; 
      for (var i = 0;i < dt.Rows.length;i++) 
      { 

       // one message in response to one <span> object 
       var oneMsg = document.createElement("span"); 

       // the message sender and corresponding sent content 
       var strLine1 = dt.Rows[i].Sender + " says: (" + dt.Rows[i].SendTime + ")"; 
       strLine1 = DealBrackets(strLine1); 

       // the content of the message 
       var strLine2 = dt.Rows[i].Contents; 
       strLine2 = DealBrackets(strLine2); 

       // show style 
       oneMsg.innerHTML = "<pre>" + strLine1 + "<br>&nbsp;&nbsp;" + strLine2 + "</pre>"; 
       oneMsg.style.padding = "2px 2px 2px 2px"; 
       oneMsg.style.color = (dt.Rows[i].Sender == username) ? "blue" : "red"; 
       oneMsg.style.fontFamily = "'Courier New'"; 

       // attached to DOM 
       div_recentMsg.appendChild(oneMsg); 
      } 
     } 


</script> 

Heres HTML-код

<div style="text-align: center"> 
    <strong><span style="font-size: 24pt"><span style="color: #333399; background-color: #ffffff"> 
     Chatting Room</span></span></strong> 

</div> 
    <table border="2" style="width: 792px; height: 443px;background-color:#ffffff;"> 
     <tr> 
      <td colspan="3" style="height: 373px; width: 729px;"> 
       <div id="recentMsg" style="width: 779px; height: 368px; overflow:auto;"> 
       </div> 
      </td> 
     </tr> 
     <tr> 
      <td colspan="3" style="height: 30px; width: 729px;"> 
       <asp:Label ID="Label1" runat="server" Font-Size="X-Large" ForeColor="Maroon">Input the message and click Send or press ENTER key:</asp:Label> 
      </td> 
     </tr> 
     <tr> 
      <td colspan="3" style="height: 40px; width: 729px;"> 
       <input id="txtcontent" onkeydown="if (event.keyCode==13) {sendMessage();return false;}" 
        style="width: 55%; height: 30px" type="text" runat="server" />   
       <input onclick="javascript:sendMessage();" style="width: 58px; border-top-style: groove; 
        border-right-style: groove; border-left-style: groove; background-color: #ebf1fa; 
        border-bottom-style: groove; height: 34px;" type="button" value="Send" id="btnSend" /></td> 
     </tr> 
     <tr> 
      <td colspan="3" style="width: 729px"> 
      </td> 
     </tr> 
    </table> 

Heres код для отправки и получения сообщений, которые я написал на стороне сервера

[AjaxPro.AjaxMethod]//code for sending messages 
public void SendMessage(string Sender,string Receiver,string Content) 
{ 
    ChatBAL clsChat = new ChatBAL(); 
    clsChat.SENDER = Sender; 
    clsChat.RECEIVER = Receiver; 
    clsChat.CONTENT = Content; 
    clsChat.SendMessage(); 

} 

[AjaxPro.AjaxMethod]//code for getting latest message and returns datatable 
public DataTable GetNewMsg(string UserName) 
{ 
    ChatBAL clsChat = new ChatBAL(); 
    DataTable dtNewMsg =new DataTable(); 
    try 
    { 
     clsChat.USERNAME = UserName; 
     dtNewMsg = clsChat.GetNewMessage();    
    } 
    catch 
    { 
     throw; 
    } 
    finally 
    { 
     clsChat = null; 
    } 
    return dtNewMsg; 
} 

ответ

0

В коде javascript вы можете использовать этот код прямо перед вызовом ajax.

AjaxPro.timeoutPeriod = 120 * 1000; //this will add a 2 minutes timeout 
    AjaxPro.onTimeout = (function (time, obj, something) { 
     if (time < AjaxPro.timeOutPeriod || obj.method !="SendMessage") return false; 
     else 
     { 
      console.log("Ajaxpro timeout exception after 120 seconds!"); 
     } 
    }); 
Смежные вопросы