客户端服务器不断通信PHP

Posted

技术标签:

【中文标题】客户端服务器不断通信PHP【英文标题】:client server constant communication PHP 【发布时间】:2012-08-09 22:35:58 【问题描述】:

我想做一个简单的游戏(应用程序),网页浏览器游戏多人游戏,需要与服务器持续连接。 现在,我使用 ajax 和普通的 php wamp 服务器,但我认为这是错误的方式,因为我需要每秒从每个用户向服务器发送请求(更新)......这似乎是错误的.. 我知道一些猿项目,但我需要一些用于 Windows 的东西(现在) 我还有什么其他选择? web-socket有点棘手,很多旧浏览器都不支持,所以不好...请帮助,谢谢。

【问题讨论】:

“很多旧浏览器,所以不好” ---并且lynx浏览器不支持图像。这是否意味着您不需要在您的网站上使用图片?软件要求应该是合理的。对开发者和消费者来说都是合理的。 如果您的目标受众是使用 IE3 和 Navigator 4 的人,那么不要浪费您的时间。 hhh,对不起,我没有说清楚。我需要这个想法,我认为有什么比发送 ajax 请求更好的东西.. 我根本不想使用 websocket,还有什么别的吗。我需要一些技术,让我可以从客户端向服务器发送“ping”.. 提前谢谢 :),抱歉我的描述不好.. 【参考方案1】:

在当今世界,有大量的选项可供您选择。您正在寻找的是 PUSH 语义而不是 PULL,即您不想(定期)从客户端轮询服务器以获取新更新,但您希望服务器在数据可用时向客户端推送数据。

您应该查看Publisher-Subscriber 工作流,您可以在其中为每个用户拥有一个频道,其他用户可以在那里发布更新。然后每个用户将订阅其频道以实时检索任何更新

市场上有很多现成的 pubsub 解决方案。我想到的几个是:

    Redis PubSub XMPP PubSub 如果您自己并不真正关心 PubSub 以及它的部署/工作/技术,请选择第 3 方服务提供商,例如 SuperFeedr、PusherApp、PubNub 等。我认为市场上至少有 10 家这样的服务提供商。

您还需要一个将您的 pubsub 频道连接到浏览器上的客户端的传输(websocket 或在旧浏览器上为您模拟 websocket 的东西)。我想到的几个选项是:

    使用BOSH connection manager(长轮询) Socket.IO Sock.JS STOMP(面向流式文本的消息传递协议) 如果您想使用免费和开源软件 (FOSS),至少有 10 个这样的现成可用选项

希望对你有帮助。

【讨论】:

以上是关于客户端服务器不断通信PHP的主要内容,如果未能解决你的问题,请参考以下文章

客户端-服务器-与 php 和 android 的通信

Java 网络编程案例二:多态客户端与服务器之间的多次通信

Delphi服务端和PHP客户端通过Socket通信

客户端(JS-Browser)和服务器(PHP)通过 Web-Socket 通过 IP 进行通信

Java NIO学习笔记 使用Selector客户端与服务器的通信

加入多线程