gpt4 book ai didi

c# - 对 asp.net mvc 应用程序的长轮询需要 POST 而不是 GET ajax 方法。为什么?

转载 作者:行者123 更新时间:2023-11-28 10:56:10 25 4
gpt4 key购买 nike

我正在复制 steven sanderson 的 signalR 演示使用的演示应用程序,他在其中演示了长轮询。该演示有效,但我(和我团队中的其他人)感到困惑的部分是我们在轮询函数中替换 ajax 方法以使用 GET 而不是 POST。

当我们使用 POST 时,一切都很好。客户端提交新的聊天。服务器在 TaskCompletionSource 成员中设置新聊天,所有轮询服务器以获取新聊天(通过 longPoll())方法的客户端都会收到新聊天。

当我将 longPoll() js 函数更改为使用 GET 方法时,服务器响应一个客户端。提交下一条消息,服务器按顺序响应不同的客户端 - 每次仅响应一个客户端。

关于为什么会这样工作有什么想法吗?

public class ChatController : Controller
{
static TaskCompletionSource<string> _nextMessage
= new TaskCompletionSource<string>();

//
// GET: /Chat/

public ActionResult Index()
{
return View();
}

public async Task<string> longPoll()
{
return await _nextMessage.Task;

}


public void PostMessage(string message)
{
_nextMessage.SetResult(message);
_nextMessage = new TaskCompletionSource<string>();

}

}

Javascript:

<script type="text/javascript">

$(document).ready(function () {

$(".btn-submit").click(function () {

//send chat message to server
$.ajax({
type: "POST",
url: "/chat/PostMessage",
data: {message: $("#txtMessage").val()}
})

//reset textbox
$("#txtMessage").val("");

});

(function longPoll() {

$.ajax({
type: "POST",
url: "chat/longPoll",
success: function (message) {
//when response is recieved, update list and call this function again
$("<li>").text(message).appendTo("#messages");

},
error: function( jqXHR , textStatus, errorThrown){
console.log("error: " + errorThrown);
},
complete: longPoll
});

})();

});

html:

<ul id="messages"></ul>

Say something: <input type="text" id="txtMessage" />
<button class="btn-submit">Submit</button>

最佳答案

你的帖子被发送了很多次,这很糟糕。

对于聊天应用程序,最好使用 AsyncController .

使用 JavaScript 函数来控制池化(setIntervalsetTimeout)。 1 秒的时间就很好。

关于c# - 对 asp.net mvc 应用程序的长轮询需要 POST 而不是 GET ajax 方法。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22259398/

25 4 0
文章推荐: javascript - 使用带有 UIWebView 的 JavaScript 通过 ID-SWIFT 检索元素
文章推荐: javascript - jQuery 将 OPTIONS 而不是 POST 请求发送到本地主机上的 REST
文章推荐: swift - 如何在 Ios 中为 UICollectionView 设置自定义布局
文章推荐: javascript - 如何使用 javascript/jQuery 检测
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com