Google Cloud Messaging — СЕРВЕРНАЯ СТОРОНА

Мне нужна небольшая помощь, чтобы понять пару вещей о 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);
}
  1. Разве не должно быть выражение «пока», которое поддерживает соединение XMPP между сервером приложений и сервером GCM?

  2. В этом случае цель серверной части (приложение для обмена мгновенными сообщениями) состоит в том, чтобы поддерживать соединение с сервером GCM и прослушивать входящие сообщения от клиентов. такие сообщения, как: 2.1 Когда клиент хочет зарегистрироваться в приложении, поэтому мне нужно сохранить его данные в базе данных. 2.2 Когда клиент хочет отправить сообщение другому клиенту, поэтому серверное приложение отвечает за пересылку сообщения по назначению?

Я искал пару примеров реализации серверной части gcm с использованием xmpp, и все они были с такой основной функцией, о которой я упоминал выше... Я что-то не так понимаю?


person sfdcdev    schedule 01.09.2014    source источник


Ответы (1)


Да, соединение XMPP должно оставаться активным. В противном случае ваш сервер не сможет получать исходящие сообщения (от устройства к облаку).

Я не могу сказать, почему все примеры, которые вы видели, не поддерживают открытое соединение. Я думаю, это упрощенные примеры.

person Eran    schedule 02.09.2014
comment
Эй, спасибо за ваш ответ. Я задал тот же вопрос здесь, и они ответили по-другому ... вы можете посмотреть на его ответ? спасибо grokkingandroid.com/xmpp-server-google-cloud- обмен сообщениями/ - person sfdcdev; 02.09.2014
comment
Более того, я проверил сейчас в Wireshark, чтобы убедиться, что соединение остается, а оно нет, откуда я могу получить шаблон для такого сервера? Я не понимаю, что я должен делать с примером, который дал мне Google. - person sfdcdev; 02.09.2014
comment
@RonDaniel Вы смогли поддерживать связь? - person Itachi; 25.01.2016