我目前正在使用Android Studio IDE为Android设备实现多人纸牌游戏。我对Java非常熟悉,但对android编程很新。
我想为Java Server和许多Android客户端之间的多人卡应用程序创建双向通信,我可以在某些条件下正确管理它们。我寻找了很多不同的方式,总是让人感到困惑。我想要做的就是从一个客户端接收消息并通过服务器广播给其他客户端。
我知道在Java中我可以使用普通的套接字和线程来执行此操作。但正如我在Android中看到的那样,在应用程序关闭之前,您无法打开套接字。首先,它会耗尽电池,然后在使用异步任务时无法更新主用户界面,该任务仅用于短期请求。只有在异步任务完成后才能执行此操作。
然后我开始寻找与JSON的HTTP通信,但HTTP java服务器是无状态的,无法跟踪游戏或向某些客户端广播。我错了吗?我也看了okHTTP for android和appWarp,我不想使用,因为我想从头开始编写应用程序的服务器端。
任何建议都会非常感谢!
答案 0 :(得分:0)
使用Android App的四个构建块之一实现了这种功能:The Service。活动处理用户可以看到的内容,服务在后台运行(获取数据,警报,计时器等)。
对于应用的实时组件,有很多选项。正如我所理解的那样,你所寻找的是一种pup-sub模式,其中许多用户订阅游戏频道并且通信是双向的。我建议从PubNub开始,这很容易使用,而且很早就很便宜。然后,如果您的应用程序变大,您可以使用Redis(或套接字)实现它。
okHTTP是一个http客户端,http是无状态和单向的,它无法处理这种用例。用于处理它的协议称为XMPP。