Android XMPP-сервер на Java из Google Документов

1

Я пытаюсь создать сервер для обработки XMPP для Android GCM, следуя Google Doc.

public static void main(String[] args) throws Exception {
    final long senderId = PROJECT_ID;
    final String password = "API_KEY";

    XMPPServer00 ccsClient = new XMPPServer00();

    ccsClient.connect(senderId, password);

    // Send a sample hello downstream message to a device.
    String toRegId = "REGISTRATION_ID";
    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);
}

До сих пор сервер мог отправлять сообщение по нисходящему потоку клиенту, но клиент не может отправлять восходящие сообщения на сервер.

Nov 26, 2014 6:07:43 PM XMPPServer00$LoggingConnectionListener authenticated
INFO: Authenticated.
Nov 26, 2014 6:07:43 PM XMPPServer00$3 interceptPacket
INFO: Sent: <message id='4259t-2'><gcm xmlns="google:mobile:data">   {&quot;to&quot;:&quot;API_KEY&quot;,&quot;delay_while_idle&quot;:true,&quot;collapse_key&quot;:&quot;sample&quot;,&quot;data&quot;:{&quot;EmbeddedMessageId&quot;:&quot;m-b9731a48-7730-40d6-a52e-2ea9253c85ca&quot;,&quot;title&quot;:&quot;World&quot;,&quot;CCS&quot;:&quot;Dummy Message&quot;},&quot;message_id&quot;:&quot;m-b9731a48-7730-40d6-a52e-2ea9253c85ca&quot;,&quot;time_to_live&quot;:10000}</gcm></message>'

Глядя на код, который я скопировал из Google, он создал соединение, а затем отправил нисходящее сообщение на устройство, после чего оно заканчивается. И если я не ошибаюсь, Google Docs говорит, что должно существовать постоянное соединение между сторонним сервером и сервером google.

connection.addPacketListener(new PacketListener() {

        @Override
        public void processPacket(Packet packet) {
        ...

Внутри connect() он создает слушатель для обработки восходящих сообщений, но поскольку программа заканчивается после отправки нисходящего сообщения, этот слушатель также заканчивается правильно?

Другой вопрос, вместо использования серверного приложения, лучше ли создавать сервлет /webapp для обработки xmpp?

Теги:
google-cloud-messaging
xmpp

1 ответ

0
Лучший ответ

Я был прав. Основная функция заканчивается, и вся программа заканчивается. То, как я решил, было использовать новый поток, чтобы запустить его, и продолжал работать, и теперь все работает нормально.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню