1

我正在尝试开发一个聊天应用程序。我正在使用 Asp.Net2.0 和 vs2005.Iam 使用 AjaxPro框架asynchronous calls访问服务器端。

timeout我的问题是当我在几秒钟后发送消息时 出现错误。可能是什么问题,我将如何解决?

我的另一个疑问是使用中是否存在严重问题 AjaxPro Framework

这是我在客户端用来发送消息的代码

    <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>   

这是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>

这是我在服务器端编写的发送和接收消息的代码

    [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;
}
4

1 回答 1

1

在您的 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!");
         }
    });
于 2014-03-18T12:27:45.477 回答