(18-06-2022, Saat: 07:43)3ddark Adlı Kullanıcıdan Alıntı: Çift taraflı canlı olarak haberleşme için TCP mqtt udp gibi soket uygulaması kullanın. Fakat istek cevap ve sürekli olmayacaksa rest iyidir ve güncel çözümdür.
Cihaz sayın çok az. En güncel en rahat ve en kolay kullanım Restfull api server ile çalışmak. Delphi ve bir sürü dil ile bunu rahatlıkla kullanabilirsiniz. Delphi, nodejs, Java, PHP, .net core, golang
Delphi iyidir derseniz. Bununla ilgili mantığını anlatacak giriş seviye bir örnek verebilirim. Diğer diller için internette bir sürü örnek mevcut
Web tarafında bilgim ve tecrübem az.
Örnekbir rest servis ile 2g üzerinden http get verisini alıp mysqle yazmıştım. Kullandığım Arduino kütüphanesinden mi yoksa 2G sebebiyle mi bilmiyorum ama veri gelme ve yazma zamanı çok uzun göründü gözüme. Yaptığım her işlemi de seri monitörden takip ettiğim için de işlemin yavaş olmasına sebep olmuş olabilir.
Öncelik anlık veriyi dinleme yapan 3-5 kullanıcıya bildirmek.Veriyi get ile alıp yazıp daha sonra talep eden kullanıcıya tekrar get ile json olarak vermek iletişim süresini uzatmaz mı?
PHP bilgim çok sınırlı gelen son datayı db e yazmadan önce değişken içinde tutup istek yapan client a vermek mümkün mü?
Basit bir delphi server denedim json olarak gelen get verisini alamadım ve cevap geriye json olarak da dönüş yapamadım.
procedure TfrmAna.IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
HtmlResult: String;
wrtJSON: TJsonObjectWriter;
giden:String;
Jvalue: TJSONValue;
islem:integer;
begin
Listbox1.Items.Add (ARequestInfo.Document);
Listbox1.Items.Add (ARequestInfo.Command);
memo1.Lines.Add('calisti');
try
Jvalue := TJSONObject.ParseJSONValue(TEncoding.UTF8.GetBytes(ARequestInfo.Document), 0)
as TJSONObject;
islem := Jvalue.GetValue<integer>('islem');
case islem of
0:begin
var seri := Jvalue.GetValue<String>('seri');
var data1 := Jvalue.GetValue<String>('data1');
var data2 := Jvalue.GetValue<String>('data2');
memo1.lines.Add(seri +' '+ data1+' '+ data2);
end;
1:begin //android telefondan
wrtJSON := TJsonObjectWriter.Create();
try
wrtJSON.WriteStartObject;
wrtJSON.WritePropertyName('islem');
wrtJSON.WriteValue('bilgi');
wrtJSON.WriteEndObject;
Memo1.Text := wrtJSON.JSON.Format;
HtmlResult := wrtJSON.JSON.Format;
finally
wrtJSON.DisposeOf;
end;
AResponseInfo.ContentText := HtmlResult ;
end;
end;
// Memo1.lines.Add(islem);
finally
Jvalue.DisposeOf;
end;
wrtJSON := TJsonObjectWriter.Create();
try
wrtJSON.WriteStartObject;
wrtJSON.WritePropertyName('islem');
wrtJSON.WriteValue('ilk_veri');
wrtJSON.WriteEndObject;
Memo1.Text := wrtJSON.JSON.Format;
HtmlResult := wrtJSON.JSON.Format;
finally
wrtJSON.DisposeOf;
end;
AResponseInfo.ResponseNo := 200 ;
AResponseInfo.ResponseText:=htmlresult;
AResponseInfo.ContentText:=htmlresult;
end;
Delphi Indy ile web server i çözemedim. GET komutu çalışıyor ama veriyi alamaıyorum.
Dün gece MQTT ile bir örnek hazırladım 500ms lik bir bekleme ile çalışıyor.
Delphi Indy ile basit bir web server hazırlayabilsem MQTT den daha verimli mi olur denemek istiyorum.