JQuery & PHP - can I push from the server?

被刻印的时光 ゝ 提交于 2019-12-04 02:03:06

Client has to poll, but you can do long polling, i.e. keep the request alive until the server has an event to push back (i.e. complete request).

Otherwise, you can use Web Sockets.

The HTTP protocol works on the request-response principle which means that the server can only generate a response following a request from the client. This means that the server cannot send a response to the client without having received a request in the first place. This is not a PHP issue, it is an HTTP issue. So no, you can't push, the client has to make a request, or poll. You could take a look at long polling, as alex suggested.

You can have the client using a long-polling mechanism like comet, etc, but there's no way to genuinely "push".

You can use "comet" to do this. PHP is a terrible language to do Comet in, though. One of the more popular techniques to do Comet in PHP (that sort of works) is long polling.

The idea with long polling is to create an AJAX request to the server. The server accepts the connection but doesn't respond (i.e.: a while loop with a sleep(1) in it) until an event takes place. This could be seconds, minutes, etc.

In order to make long polling "work", though, you're going to have to make sure the connection doesn't time out very quickly, so set your execution time high (minutes, or unlimited if possible). You're also going to need to write code on the client that handles the server's disconnection/timeout. When that happens, a new request should be started.

Hope this helps!

That's not something really too related to jquery, but to Http itself.

It's basically not possible for a server to push anything to client actively, two possible solution is:

  1. Keep the Http Connection without closing it.

  2. Polling

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!