就个人而言,我建议使用 PubNub 库http://www.pubnub.com/docs/java/android/android-sdk.html,IHO 比 GCM 更强大。
当一个游戏由 x 个玩家创建时,每个玩家都会以编程方式订阅一个 pubnub 频道。
当玩家 X 在游戏中做某事时,该动作将立即发布在频道中,并且所有订阅该频道的玩家都会立即收到该动作的通知(在代码中),因此您可以采取该指示并显示通知等待的玩家轮到她了。
这是在客户端使用 Pubnub id 库的片段,以接收特定 chan 上的传入消息:
public void Startpubnub(String channel) {
Toast.makeText(this, channelName+"TransportLine activated...", Toast.LENGTH_LONG).show();
Log.i("PUBNUB", channelName+"TransportLine activated...");
try {
pubnub.subscribe(new String[] {channel}, new Callback() {
public void connectCallback(String channel) {
notifyUser("CONNECT on channel:" + channel);
}
public void disconnectCallback(String channel) {
notifyUser("DISCONNECT on channel:" + channel);
}
public void reconnectCallback(String channel) {
notifyUser("RECONNECT on channel:" + channel);
}
@Override
public void successCallback(String channel, Object message) {
Log.i("tag","broadcast is sent!");
notifyUser(channel + " " + message.toString());
Log.i("afterBroadcastisSent", message.toString());
try {
Message m = Message.obtain();
Bundle b = new Bundle();
b.putString("message", message.toString());
m.setData(b);
mMessageHandler.sendMessage(m);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void errorCallback(String channel, Object message) {
notifyUser(channel + " " + message.toString());
}
});
} catch (PubnubException e) {
}
然后在你的后端订阅那个chan,http :
//www.pubnub.com/docs/java/javase/javase-sdk.html,https: //github.com/pubnub/python,然后发布一个味精回到基于传入消息的chan。
您甚至可以通过 PubNub 与 GCM 通信。
如果您计划支持设备,尤其是基于国际的设备,由于许可问题而没有安装 google play 服务,那么 PubNub 是终极快速和快速的实时推/拉机制。PubNub 本质上是上面@Ashish 描述的 Socket 通信,但在 Google 基础架构之外。