0

How can I make an ajax request where the script can append something to the request a long time after (minutes) the headers were sent? How do I do this with jquery?

This would be very useful in chat applications. Then there hasn't to be one request per message.

4

3 回答 3

2

据我所知,这是不可能的。通常使用的是长轮询。长轮询涉及在服务器上有一个长期存在的请求,该请求轮询数据存储并在数据可用时发送 200 响应。由于发送消息是从客户端发起的,因此消息可以作为单个 AJAX 调用发送,因此不需要有一个活动的 HTTP 请求。注意:长轮询用于服务器到客户端的通信。正如我所说,我不确定您想要做的事情是否可行,但无论如何,从客户端为每条消息发送完整的 HTTP 请求的开销都不值得尝试优化。

如果你想要一个长寿命的套接字连接,你应该考虑使用socket.io。它非常适合聊天用例。

教程描述了如何使用 socket.io 实现聊天。顺便说一句,socket.io 不限于 Node.js 后端,存在许多不同语言的实现。谷歌搜索该术语socket.io server implementations会出现很多结果。

于 2013-11-12T19:25:37.263 回答
0

不,这不是在聊天应用程序中完成的。

如果您访问 Facebook.com 并查看消息是如何发送的,您会看到每条消息都是在Enter按下按钮时直接发送的。因为一旦请求发送到服务器,它们之间的连接就会断开,直到响应准备好。

您想发送标头然后继续加入数据,对吗?那么为此,您需要在服务器端保持请求处于活动状态。我不确定你为什么想要这个。但是,如果您只想创建聊天应用程序,那么这是我的参考

使用http://www.asp.net/signalr (SignalR) 或将消息发送到域,假设是不使用 cookie 的子域。所以只发送和接收文本信息。

但请注意,每次必须发送消息时,您都必须发送新请求。我没有将 SignalR 用于我的应用程序,但我尝试阅读他们的文档,其中包含其工作的详细信息,并且用于此类用途。

于 2013-11-12T19:37:39.523 回答
0

你不能用纯 JavaScript 做到这一点。

如果您的 Web 应用程序打算在最近的浏览器上运行,您可以使用HTML5 服务器发送事件 (SSE)

看看这里:http ://blog.alexmaccaw.com/killing-a-library

或在这里:http ://www.html5rocks.com/en/tutorials/eventsource/basics/

于 2013-11-12T19:38:17.293 回答