我需要一些帮助来理解关于gcm的一些事情 - 服务器端。 我正在使用服务器端http://developer.android.com/google/gcm/ccs.html
的例子开发即时消息应用程序执行此代码后,它连接但几秒钟后终止。我可以猜测它是因为main()函数的原因。
public static void main(String[] args) throws Exception {
final long senderId = 1234567890L; // your GCM sender id
final String password = "Your API key";
SmackCcsClient ccsClient = new SmackCcsClient();
ccsClient.connect(senderId, password);
// Send a sample hello downstream message to a device.
String toRegId = "RegistrationIdOfTheTargetDevice";
String messageId = ccsClient.nextMessageId();
Map<String, String> payload = new HashMap<String, String>();
payload.put("Hello", "World");
payload.put("CCS", "Dummy Message");
payload.put("EmbeddedMessageId", messageId);
String collapseKey = "sample";
Long timeToLive = 10000L;
String message = createJsonMessage(toRegId, messageId, payload,
collapseKey, timeToLive, true);
ccsClient.sendDownstreamMessage(message);
}
不应该是一个'while'语句,它可以在app-server和GCM服务器之间保持XMPP连接的活动状态吗?
不是这种情况下服务器端(即时消息应用程序)的目的是使连接与GCM服务器保持活动状态并侦听来自客户端的传入消息。 消息如: 2.1当客户想要注册到应用程序时,我需要将其详细信息存储在数据库中。 2.2当客户想要向另一个客户端发送消息以便服务器端应用程序负责将消息转发到其目的地时?
我已经找了几个使用xmpp实现gcm服务器端的例子,所有这些都是我上面提到的这种主要功能...我得错了吗?
答案 0 :(得分:0)
是的,XMPP连接必须保持活跃状态。否则,您的服务器将无法接收上游(设备到云)消息。
我不能说为什么你看到的所有例子都没有保持开放连接。我猜他们是简化的例子。