2013-09-26 16 views

cevap

13

İlk Sonra https://code.google.com/p/goprotobuf/ gelen go protokol tampon kütüphane kurmak

sudo apt-get install protobuf-compiler 

kullanarak bilgisayarınızdaki Protoc yükleyin. Dartton versiyonunu şu adreste bulabilirsiniz: https://github.com/dart-lang/dart-protoc-plugin.

sonraki adım mesajın bir tanımını içeren bir .proto dosyası gönderilmek üzere yazmaktır. örnekler şu adreste bulunabilir: https://developers.google.com/protocol-buffers/docs/proto. Örneğin

:

message Car { 
    required string make = 1; 
    required int32 numdoors = 2; 
} 

Sonra bir go dosyası ve bu proto dosyası için bir dart dosyasını derlemek için Protoc aracını kullanın. aşağıdaki gibi w

c := new(Car) 
c.Make = proto.String("Citroën") 
c.Numdoors = proto.Int32(4) 

Sonra, bir http.ResponseWriter üzerinde nesneyi gönderebilir:

binaryData, err := proto.Marshal(c) 
if err != nil { 
    // do something with error 
} 
w.Write(binaryData) 

yılında

tip sağlanan kullanmayı unutmayın, seferde bir araba nesnesi oluşturmak için Dart kodu, aşağıdaki gibi bilgileri getirebilirsiniz:

void getProtoBuffer() { 
    HttpRequest.request("http://my.url.com", responseType: "arraybuffer").then((request) { 
     Uint8List buffer = new Uint8List.view(request.response, 0, (request.response as ByteBuffer).lengthInBytes); // this is a hack for dart2js because of a bug 
     Car c = new Car.fromBuffer(buffer); 
     print(c); 
    }); 
} 

Her şey işe yaradıysa, şimdi bir Araba o Nesne senin Dart uygulaması :)

+0

ben bir dize eser olarak ikili veri okuma şaşırdım. Karakter kodlamaları hakkında ne yaparsınız? Örneğin, UTF8 verileri belli bayt dizilerini içeren etmemelerini http://en.wikipedia.org/wiki/UTF-8#Invalid_byte_sequences –

+0

Maalesef kesinlikle haklısın! Orijinal kod utf-8 ile çalışmıyor. Güncellemeyi yapacağım ... bitti! – ehrt1974

+0

Harika cevap ... Bu dart2js hack'inin neden gerekli olduğunu açıklayabilir misiniz? Cevabını okumadan hemen önce vurdum ve merak ediyorum. – sjr

İlgili konular