我希望有效地实现长轮询系统的服务器端。客户端连接到我的服务器并发送请求。服务器在很长(但可变)延迟后发送响应,比方说10分钟。
但是如果客户端消失并终止套接字,我希望服务器检测到这种情况并释放自己的套接字而不等待超时的全长。这允许处理程序线程终止或执行其他操作(因为每个客户端都由一个单独的线程处理)。
我的问题:这种逻辑是否可以实现?我正在考虑的服务器伪代码是这样的:
DataTable dtCart = (DataTable)Session["sessiondtCart"];
GridView1.DataSource = dtCart;
GridView1.DataBind();
int total = 0;
for (int i = 0; i < GridView1.Rows.Count; i++)
{
total = total + int.Parse(dtCart.Rows[i]["PRODUCT_AMOUNT"].ToString());
}
lblTotalAmount.Text = total.ToString();
就潜在的解决方案而言:我愿意考虑使用外部线程轮询套接字是否已关闭。我不愿意看NIO,频道和选择器,因为它们涉及不同的范例。