-
Похожий контент
-
- 1 ответ
- 702 просмотра
-
- 3 ответа
- 1 752 просмотра
-
- 0 ответов
- 1 231 просмотр
-
- 0 ответов
- 1 412 просмотра
-
- 5 ответов
- 2 060 просмотров
-
- 12 ответов
- 5 316 просмотров
-
- 3 ответа
- 2 212 просмотра
-
- 17 ответов
- 4 735 просмотров
-
- 64 ответа
- 17 297 просмотров
-
- 12 ответов
- 4 598 просмотров
-
-
Последние посетители 0 пользователей онлайн
- Ни одного зарегистрированного пользователя не просматривает данную страницу
Вопрос
XXXXXX
Добрый день. У меня появилась проблема в проекте после добавления Push сообщений.
Задача состоит в следующем: нужно сделать так, чтобы можно было с одного телефона послать запрос на сервер с текстом уведомления и сервер отправил бы уведомление с этим текстом второму телефону. На оба телефона ставлю одну и туже версию тестовой программы, подключаюсь сначала одним телефоном, отправляю запрос на уведомление, всё отлично, на второй телефон оно приходит моментально. Со второго на первый также всё доходит. Проблема появляется когда к серверу подсоединяются 2 (больше не пробовал) клиента одновременно. первое сообщение доходит через несколько секунд, НО, после него сколько бы не тыкал на отправку всё молчком и через некоторое время клиент отсоединяется от сервера и выдаёт ошибку "Not connected", также на сервере заходит в обработку ивента "Disconnect".
Для связи Client/Server использую IndyTcp.
Систему Push сообщений собираю (в основном) по туториалу:
Компоненту
IdSSLIOHandlerSocketOpenSSL1 порт прописываю 9090
IdTCPServer1 - 8989
З.ы. для первого пробовал без порта, та же самая проблема.
Код отправки уведомления с сервера. На данный момент после получения команды на отправку уведомления сервер посылает всем клиентам.
procedure TForm1.SendNotification(Txt: string); var AJson: TJSONObject; AJsonData: TJSONObject; ARegisterIds:TJSONArray; AData, AResponseContent:TSTringStream; I:Integer; const DevTokens :array[1..2] of string = ('DeviceToken1', 'DeviceToken2'); begin ARegisterIds := TJSONArray.Create; AJson := TJSONObject.Create; try for I := Low(DevTokens) to High(DevTokens) do begin ARegisterIds.Add(DevTokens[I]); end; AJsonData := TJSONObject.Create; AJsonData.AddPair('id', ID.ToString()); ID := ID + 1; AJsonData.AddPair('message', Txt); AJson.AddPair('registration_ids', ARegisterIds); AJson.AddPair('data', AJsonData); IdHTTP1.Request.ContentType := 'application/json'; IdHTTP1.Request.CustomHeaders.AddValue('Authorization', 'key=AIzaSyDGHrZIQSx8execZvc6E-YYKFsGBvSoSGs'); AData := TStringStream.Create(AJson.ToString, TEncoding.UTF8); AData.Position := 0; AResponseContent := TStringStream.Create('', TEncoding.UTF8); IdHTTP1.Post('https://android.googleapis.com/gcm/send', AData, AResponseContent); AResponseContent.Position := 0; mmo1.Lines.Add(AResponseContent.DataString); finally end; end;3 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.