Поиск сообщества
Показаны результаты для тегов 'IndyTcp'.
Найдено: 2 результата
-
Добрый день всем, Прошу помощи знающих: Использую TidTCPClient, отрабатываю потерю связи в процессе работы (втупую выдергиваю провод). procedure TClient.onTimer(Sender: TObject); begin try self.FunctionRead(0); except self.Timer.Enabled:= FALSE; inc(self.cntErr); end; end; Получаю каскад сообщений "Socket Error: 10054" т.к. блок except не вызывается. 1. Каким образом отключить окна сообщений об ошибке? (т.к. пользователю они в общем-то ни к чему) 2. Каким образом корректно отловить эти ошибки, чтобы перезапустить соединение? 3. Где вообще почитать информацию о Indy в FMX 10.3? Заранее спасибо!
-
Добрый день. У меня появилась проблема в проекте после добавления 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;