我做了一个网站(SiteA),首页有有请求推送部分的代码.如果我把这个代码注释掉,那么网站一直正常运行.如果没有被注释,那么网站运行一天(其中有很多人登陆),那么网站只能打开登陆页面,进不去.也没任何报错这个问题 就是把连接池(appA)删了 在新建一个连接池(appB) 把网站SiteA的连接池指向appB 就好用了.或者第二天自己就好了但是我也不能总这么干啊..出现这个问题 是不是推送部分的代码导致连接池满了?我该怎么解决?是在连接池里设置什么回收的?还是代码写
如果回收了 会不会导致session失效?我的session是在StateServer里的
如果回收了 会不会导致session失效?我的session是在StateServer里的
解决方案 »
- asp.net (vb)如何判断浏览器类型啊
- ASP.NET Login控件的password问题!急~~~~~~~~~~~~~~~··
- 怎样打印gridview数据
- 我自己做的网站,不懂美工,请大家给点建议,谢谢!
- 使用Gridview的时候,当绑定的dataset记录数为零的时候,能不能把这个Gridview的表格头给显示出来?
- 难道分页检索和对数据的修改,更新不能放到一个页面么?高手帮帮忙!谢谢!
- 关于写入到Excel的问题,急啊
- 还是关于树控件的问题,请大家帮帮忙啊,解决使劲给分!
- 回答全部问题(50分)
- 【新人求教】求推荐一个web打印控件,免费的收费的都可以,急求!!
- 求助
- detailsview在insert模式下,添加新纪录时,怎么使某个列有初始的值
<script language="javascript" type="text/javascript">
$(document).ready(function () {
//加载时间
function wait()
{
$.post("comet_broadcast.aspx", { content:"-1" },
function (data, status)
{
//data格式为10004,10006@您有工作计划需要查阅@工作计划审批@../login.aspx
//分别为用户集合,描述,tab标题,路径 以下分别从消息里传入
var uid = data.split("@")[0];
var mg = data.split("@")[1];
var tab= data.split("@")[2];
var url= data.split("@")[3];
if (uid.indexOf($("#h1").val()) !=-1&&data.indexOf("@")!=-1 )
{
//有消息了,而且来自自己的
msgShow(mg,tab,url);
}
wait();
}, "html"
);
}
wait();
});
</script>
-1的时候不做处理,只有别人发送消息的时候才推送数据 然后客户端显示
<script type="text/javascript">
$(document).ready(function () {
//加载时间
function wait() {
alert("1");
$.post("comet_broadcast.aspx", { content: "-1" },
function (data, status) {
//data格式为10004,10006@您有工作计划需要查阅@工作计划审批@../login.aspx
//分别为用户集合,描述,tab标题,路径 以下分别从消息里传入
var uid = data.split("@")[0];
var mg = data.split("@")[1];
var tab = data.split("@")[2];
var url = data.split("@")[3];
if (uid.indexOf($("#h1").val()) != -1 && data.indexOf("@") != -1) {
//有消息了,而且来自自己的
msgShow(mg, tab, url);
}
}, "html"
);
} setInterval(wait, 5000); });
</script>
这样就是轮询了? 但是这样子目测不行啊..我是推送 如果我推的那个时候 你没有连接 客户端怎么取数据??看下我发的http://bbs.csdn.net/topics/390346423差不多就是这个意思
using System;
using System.Collections.Generic;
using System.Web;/// <summary>
/// Summary description for Messages
/// </summary>
public class Messages
{
/// <summary>
/// 记录所有请求的客户端
/// </summary>
List<myAsynResult> clients = new List<myAsynResult>(); #region 实现该类的单例
private static readonly Messages _Instance = new Messages();
private Messages()
{
}
public static Messages Instance()
{
return _Instance;
}
#endregion public void AddMessage(string content, myAsynResult asyncResult)
{
//content=content+clients.Count.ToString();
//当传入的内容为"-1"时,表示为建立连接请求,即为了维持一个从客户端到服务器的连接而建立的连接
//此时将该连接保存到 List<myAsynResult> clients中,待再有消息发送过来时,该连接将会被遍历,并且会将该连接输出内容后,结束该连接
if (content == "-1")
{
clients.Add(asyncResult);
}
else
{
//将当前请求的内容输出到客户端
asyncResult.Content = content;
asyncResult.Send(null); //否则将遍历所有已缓存的client,并将当前内容输出到客户端
foreach (myAsynResult result in clients)
{
result.Content = content;
result.Send(null);
} //清空所有缓存
clients.Clear();
}
}
}
如果为-1就保持连接 如果是别的 才发送到客户端 怎么解决连接池满的问题?
看看IIS B的连接池的配置,设置的自大连接数和A是不是一样的。
楼主思路有问题,你的事BS 程序,不开浏览器,你推送也没用啊。
还是用js 定时查询吧
1.长连接域名与主域名不同(最好是泛域名解析),因为浏览器对于域名连接数有限制(比如Chrome现在是6个),否则用户多开几个页面浏览器就卡住了。
2.不要使用ajax的POST,应该使用动态加载脚本,否则有的浏览器会显示页面加载中的状态。
3.长连接采用异步模式,因为同步模式可能导致工作线程数过多。
4.长连接超时检测(比如一分钟),防止僵死链接的累积。
你是要实时聊天?还是只是获取一个信息? 获取信息的话,js 定时隔几秒请求一下服务器端(setInterval(wait, 5000);),够快了吧,
还有你的-1 只是在服务端做个标志,但你的客户端还是在不断的请求服务器呢.....
你的问题估计是IIS 连接数满了
是聊天的 我也说了 请求-1的时候 就表示连接,如果不是-1 就是表示有人说话(msg)那么把msg发送到各个浏览器做处理.现在问题就是玩一会 就爆了 访问不了了 当下的别的页面 也访问不了就是这个问题 该如何优化代码 或者如何解决是从代码入手? 还是IIS? 还是配置文件? 还是.....???
//此时将该连接保存到 List<myAsynResult> clients中,待再有消息发送过来时,该连接将会被遍历,并且会将该连接输出内容后,结束该连接
看到这2句话了吧