gpt4 book ai didi

asp.net-mvc - Ajax 长轮询无法正常工作

转载 作者:行者123 更新时间:2023-12-01 00:08:22 28 4
gpt4 key购买 nike

我正在 MVC 2 中使用长轮询开发一个简单的陌生人聊天应用程序。如果我在不同的浏览器中打开应用程序,它在我的开发机器上工作正常。我的意思是,如果我在 IE 和 mozilla 中加载应用程序,它工作正常

如果我在浏览器的两个选项卡中使用该应用程序(例如:IE),则长轮询不会从两个选项卡中触发。我的意思是,有一个开始按钮可以启动聊天,该按钮会触发长轮询。我可以看到它在调试时调用操作。我的问题是,当我单击第一个选项卡中的开始按钮时,它会触发一个 ajax 请求(长轮询(此请求在服务器上等待,直到另一个请求到来))。然后我单击选项卡二中的启动按钮,在服务器返回第一个请求之前(超时后),它不会触发 ajax 请求。

为什么会发生这种情况?我读到浏览器会阻止多个 ajax 请求..这是原因吗? ..如果我使用不同的浏览器,它工作正常。只有当我在同一浏览器中使用两个选项卡时才会出现问题

最佳答案

I read like browser will block multiple ajax request.

是的,如果您使用 session ,ASP.NET 会阻止来自同一 session 的并发请求。引用自documentation :

Access to ASP.NET session state is exclusive per session, which means that if two different users make concurrent requests, access to each separate session is granted concurrently. However, if two concurrent requests are made for the same session (by using the same SessionID value), the first request gets exclusive access to the session information. The second request executes only after the first request is finished. (The second session can also get access if the exclusive lock on the information is freed because the first request exceeds the lock time-out.) If the EnableSessionState value in the @ Page directive is set to ReadOnly, a request for the read-only session information does not result in an exclusive lock on the session data. However, read-only requests for session data might still have to wait for a lock set by a read-write request for session data to clear.

还要确保您已禁用缓存。例如,如果您使用 jquery,则在轮询时使用 cache: false 选项:

$.ajax({
url: '/poll',
cache: false,
success: function(result) {
// ...
}
});

关于asp.net-mvc - Ajax 长轮询无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6143774/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com