Php 通知玩家另一个人正在挑战他

Php 通知玩家另一个人正在挑战他,php,android,sockets,libgdx,server-sent-events,Php,Android,Sockets,Libgdx,Server Sent Events,我正在为Android开发一款简单的多人纸牌游戏 我正在寻找最简单的(可能是免费的)解决方案来立即提醒玩家有人在挑战他 实际流量: Player1按下一个按钮挑战player2 玩家2只有在按下“检查新挑战”按钮时才会在游戏中收到通知 所需流量: Player1按下一个按钮挑战player2 Player2几乎立即收到通知:如果游戏打开,则在游戏中;如果应用关闭,则通过通知 我的应用程序是用Java和LibGDX制作的 我的服务器是一个Linuxweb共享主机,带有PHP7.0.33,在

我正在为Android开发一款简单的多人纸牌游戏

我正在寻找最简单的(可能是免费的)解决方案来立即提醒玩家有人在挑战他

实际流量:

  • Player1按下一个按钮挑战player2
  • 玩家2只有在按下“检查新挑战”按钮时才会在游戏中收到通知
所需流量:

  • Player1按下一个按钮挑战player2
  • Player2几乎立即收到通知:如果游戏打开,则在游戏中;如果应用关闭,则通过通知
我的应用程序是用JavaLibGDX制作的

我的服务器是一个Linuxweb共享主机,带有PHP7.0.33,在这里我无法安装ratchet、composer或其他,我无法访问SSH

phpinfo()
中的一些详细信息:

  • “Configure Command”具有
    “--启用套接字=共享”
  • “已注册的流套接字传输”具有
    tcp、udp、unix、udg、ssl、sslv3、sslv2、tls、tlsv1.0、tlsv1.1、tlsv1.2
  • “curl-UNIX_SOCKETS”=
    true
  • '套接字-套接字支持'='true'
  • “默认套接字超时”=
    true
我在网上找到了以下选项:

  • ,:Firebase解决方案的设置和研究似乎既复杂又耗时,服务器(我只有共享的web主机)或推送通知要求我从控制台手动发送通知
  • :两次运行之间的时间限制为1分钟,显示通知的时间最长为2分钟,同时还有后台运行时间限制
  • :(一种)它的“最小间隔为15分钟”
  • :我试过了。如果.html和.php文件都在localhost上,则可以正常工作,但如果我将.php文件放在宿主上,则不会收到任何消息(即使在浏览器控制台的“网络”选项卡中每隔大约5秒出现一个新请求)
根据你的经验,请告诉我你建议我做什么

编辑

我联系了我的网络托管提供商:他们说由于网络共享托管的限制,我不能使用WebSocket

因此,不花钱的唯一可能方式是直接在Android上通过一些服务/后台服务或类似服务


即使应用程序关闭,您建议如何在Android上实现一个时间更短的重复服务器HTTP请求?

我认为一个好方法是调用REST API(不需要firebase),只有一个简单的web服务器和PHP+MYSQL才能做到这一点

我更多地来自PHP/JAVASCRIPT/MYSQL/AJAX世界…:

AJAX的观点:

•Javascript,定期或按需(div with onclick…)检查或“询问”PHP以获取某些数据,并以HTML格式返回该数据

在Android中,我认为本教程似乎很有趣:

用这个lib

像这样的

AndroidNetworking.get("https://www.com/getAllUsers/{pageNumber}")
                 .addPathParameter("pageNumber", "0")
                 .addQueryParameter("limit", "3")
                 .addHeaders("token", "1234")
                 .setTag("test")
                 .setPriority(Priority.LOW)
                 .build()
                 .getAsJSONArray(new JSONArrayRequestListener() {
                    @Override
                    public void onResponse(JSONArray response) {
                      // do anything with response
                    }
                    @Override
                    public void onError(ANError error) {
                      // handle error
                    }
                });

如果这是一个游戏,玩家们会希望在有人挑战他们的时候立即知道,而不是在某个时间之后。当收到短信时,在其他用户发送短信后,也遵循同样的原则。所以我建议使用定制的广播接收器和网络sockets@javdromero你能给我推荐一个url来解释怎么做吗?我在后台使用PHP。根据您想要的框架,有一些选项,比如,或者我确信还有更多,这些是我已经做过的seen@javdromero谢谢,我看到了。我不能使用它们,请参阅我的编辑。您说您不能使用composer,但您能进一步澄清吗?如果需要,Composer可以直接作为phar运行,而不需要“安装”。您没有SSH访问权限吗?问题是如何尽快警告播放机。在移动设备上,连接、RAM、速度等资源是有限的。我应该避免在很短的时间内定期打电话;如果应用程序在后台使用了太多的资源(例如,当它关闭时),Android也会认为它是负面的。@user2342558我正在做一些研究,关于websocket与ajax与webrtc的争论。。。。对于多人游戏来说,webrtc有点奇怪,它可以提供点对点的实时数据交换(无需通过服务器)。在Webrtc中,服务器仅用于建立连接。一旦连接,数据就从一个节点传输到另一个节点。WebRTC对于视频聊天、音频聊天、文本聊天(任何数据…)也非常热门。此外,它是多平台桌面+android+ios+等。在WebRTC场景中,您可以在桌面上安装一个播放器,在android上安装另一个播放器(可以在移动应用程序的webview中安装)@user2342558我发现PeerJS我检查了demo=>1浏览器的发送和另一个浏览器的接收,连接和即时文本聊天双向(极快)