var url = 'DesktopModules/MessageManage/RealtimeMessage.aspx?MessageListStat=0&MessageListDetail=1&MessageMsn=2';
var comet = {
connection: false,
iframediv: false, initialize: function() {
if (navigator.appVersion.indexOf("MSIE") != -1) {
// For IE browsers
comet.connection = new ActiveXObject("htmlfile");
comet.connection.open();
comet.connection.write("<html>");
comet.connection.write("<script>document.domain = '" + document.domain + "'");
comet.connection.write("</html>");
comet.connection.close();
comet.iframediv = comet.connection.createElement("div");
comet.connection.appendChild(comet.iframediv);
comet.connection.parentWindow.comet = comet;
comet.iframediv.innerHTML = "<iframe id='comet_iframe' src='./" + url + "'></iframe>";
这是我从网上下载的脚本,可以建立长连接以下是我的服务端代码,也可以循环发送给客户端
<% Response.Flush(); int top = lblTop.Text.Equals("") ? 20 : Convert.ToInt32(lblTop.Text);
// System.Xml.XmlNode settingNode = message.GetMessageSetting(); // bool serviceRunning = settingNode.Attributes["ServiceRunning"].Value.ToLower().Equals("true");
// int refreshSpanSeconds = int.Parse(settingNode.Attributes["RefreshSpan"].Value) * 1000; int refreshSpanSeconds = 1000;
//int num = 0;
do
{
// if(num++==1)
//{
// Response.Write("<script type='text/javascript'>window.parent.comet.reload();</script>");
// num = 0;
//} string[] keys = Request.QueryString.AllKeys;
for (int i = 0; i <= keys.Length - 1; i++)
{
string function = keys[i];//获取函数名,以便把数据发送到该函数的客户端 string data = GetData(top,function); if (data.StartsWith("[")&data.EndsWith("]"))
{
Response.Write("<script type='text/javascript'>eval(\"window.parent.comet." + function + "(" + data + ")\");</script>");
}
else
{
Response.Write("<script type='text/javascript'>eval(\"window.parent.comet." + function + "('" + data + "')\");</script>");
}
}
try
{
Response.Flush();
}
catch
{
break;
} System.Threading.Thread.Sleep(refreshSpanSeconds); // if (!serviceRunning)
// {
// break;
// }
}while(true);
%>
以下是运行遇到的问题:
打开客户端第一次建立好长连接之后.当其他aspx页面第一次请求时,为什么需要等上差不多2分钟的时候,服务器端才接收到这个请求,之后请求就一切就正常了,每次新建长连接之后,都会遇到这个郁闷的问题,有没高手指点,谢谢!
var comet = {
connection: false,
iframediv: false, initialize: function() {
if (navigator.appVersion.indexOf("MSIE") != -1) {
// For IE browsers
comet.connection = new ActiveXObject("htmlfile");
comet.connection.open();
comet.connection.write("<html>");
comet.connection.write("<script>document.domain = '" + document.domain + "'");
comet.connection.write("</html>");
comet.connection.close();
comet.iframediv = comet.connection.createElement("div");
comet.connection.appendChild(comet.iframediv);
comet.connection.parentWindow.comet = comet;
comet.iframediv.innerHTML = "<iframe id='comet_iframe' src='./" + url + "'></iframe>";
这是我从网上下载的脚本,可以建立长连接以下是我的服务端代码,也可以循环发送给客户端
<% Response.Flush(); int top = lblTop.Text.Equals("") ? 20 : Convert.ToInt32(lblTop.Text);
// System.Xml.XmlNode settingNode = message.GetMessageSetting(); // bool serviceRunning = settingNode.Attributes["ServiceRunning"].Value.ToLower().Equals("true");
// int refreshSpanSeconds = int.Parse(settingNode.Attributes["RefreshSpan"].Value) * 1000; int refreshSpanSeconds = 1000;
//int num = 0;
do
{
// if(num++==1)
//{
// Response.Write("<script type='text/javascript'>window.parent.comet.reload();</script>");
// num = 0;
//} string[] keys = Request.QueryString.AllKeys;
for (int i = 0; i <= keys.Length - 1; i++)
{
string function = keys[i];//获取函数名,以便把数据发送到该函数的客户端 string data = GetData(top,function); if (data.StartsWith("[")&data.EndsWith("]"))
{
Response.Write("<script type='text/javascript'>eval(\"window.parent.comet." + function + "(" + data + ")\");</script>");
}
else
{
Response.Write("<script type='text/javascript'>eval(\"window.parent.comet." + function + "('" + data + "')\");</script>");
}
}
try
{
Response.Flush();
}
catch
{
break;
} System.Threading.Thread.Sleep(refreshSpanSeconds); // if (!serviceRunning)
// {
// break;
// }
}while(true);
%>
以下是运行遇到的问题:
打开客户端第一次建立好长连接之后.当其他aspx页面第一次请求时,为什么需要等上差不多2分钟的时候,服务器端才接收到这个请求,之后请求就一切就正常了,每次新建长连接之后,都会遇到这个郁闷的问题,有没高手指点,谢谢!
后来不知道怎么就好了
建议LZ检查一下环境