我想直接从服务器向客户端的php网页推送数据。我已经搜索过很多次这个问题,我不想使用ajax推送引擎或其他东西,比如cometD(如果你知道我在说什么)。我想知道是否有任何办法在我的服务器上放置一个程序,可以向所有连接的客户端发送数据。我希望使用c、c++或c#完成此操作,我可以自己编程,只是想知道它是否可能以及如何实现。
我想直接从服务器向客户端的php网页推送数据。我已经搜索过很多次这个问题,我不想使用ajax推送引擎或其他东西,比如cometD(如果你知道我在说什么)。我想知道是否有任何办法在我的服务器上放置一个程序,可以向所有连接的客户端发送数据。我希望使用c、c++或c#完成此操作,我可以自己编程,只是想知道它是否可能以及如何实现。
轮询:每X秒,客户端会请求一个包含所需内容的网页。这是使用HTTP的标准方式:客户端发送一个GET请求,服务器发送响应。
推送:每个客户端都会请求一个网页,但服务器实际上会等待您发送消息。您可以使用此http通道来“推送”数据:客户端发送GET请求,服务器等待直到他有要发送的响应。
正如您所看到的,我没有谈论任何语言实现,只是关于如何偏离HTTP协议以实现您想要的功能。推送方法的不足之处在于,即使客户端处于空闲状态,您也将拥有X个客户端打开的X个套接字。拉动方法则不会出现这种情况,当响应发送后,套接字就会关闭。
现在,如果您想这样做,您需要从客户端开始连接。这就是“Ajax”部分有用的地方,在jquery中看看:
$.get('/wait_for_message', function(data) {
alert('My server send:' + data);
})
你的服务器将会收到一个 GET /wait_for_message HTTP/1.1
请求。不要直接发送数据回去,而是可以将这个 socket 保存在一个“等待某些东西的客户端”列表中。然后在需要时,可以遍历这个列表,向所有 socket 写入数据,然后就完成了:所有客户端都会收到数据。
现在这个机制并不容易正确实现,这就是为什么你可以使用另一个项目来完成它,正如其他人所建议的那样。
您可以使用任何编程语言编写/修改一个非常简单的Web服务器,从数据库中格式化和提供数据,甚至忽略实际请求是什么。您只需要向套接字编写标题和数据即可。您也可以根据某个列表主动发起连接来完成同样的事情。