2013-05-28 2 views
0

У меня есть простой сервер буферов протоколов Google, работающий на Java, и мой друг должен получить к нему доступ из своего приложения ActionScript 3. Мы обнаружили, что легко генерировать классы от * .proto с:Как получить доступ к службе protobuf из actionscript-3?

protoc --plugin=protoc-gen-as3=protoc-gen-as3.bat --as3_oututput my.proto 

но мы совершенно ошеломлен, как к фактической конфигурации (настройки адреса сервера и порт), получая канал связи и на самом деле вызова службы определены в * .proto.

В Java это довольно легко с помощью DuplexTcpClientBootstrap, но что из ActionScript? Я пробовал поиск по Google, но все, что я могу найти, связано только с генерированием классов от *.proto, без примеров действительных методов/функций, вызываемых.

TIA, Буду благодарен за любую ссылку или пример!

+0

Помимо 'прибегая к помощи' - вы на самом деле пытался писать код? Как и во многих вопросах, связанных с AS3, ваш вопрос действительно слишком широк, чтобы ожидать полезного ответа. Возможно, если вы разместите какой-нибудь пример кода или даже psuedo-код, мы сможем увидеть, чего вы пытаетесь достичь, и укажете вам в правильном направлении. – hunter

ответ

-1

С «pafau k» у нас есть сервер Java - он использует protobuf - но он записывается в сокеты. Я думаю, что у нас есть недоразумение, потому что flex работает, вероятно, на протоколе «http» - я прав?

var callService:CallcenterService = new CallcenterService(); 
var simpleWebRPC:SimpleWebRPC = new SimpleWebRPC("0.0.0.0:1234/"); 
callService.sendFunction = xmlsock.send; 
callService.getDefaults(new EmptyMessage(), function(result:*):void { 
    var response:Defaults = result as Defaults; 
    if (response){ 
    trace("RPC call succeeded:", response); 
    } 
    else{ 
    trace("RPC call failed:", ErrorEvent(result).text); 
    } 
}); 

callService генерируется из прото

message EmptyMessage {} 
message Defaults { 
    required string xmlContents = 1; 
} 
service CallcenterService { 
    rpc getDefaults (EmptyMessage) returns (Defaults); 
} 

Это ошибка из Java-сервера:

com.googlecode.protobuf.pro.duplex.handler.ServerConnectRequestHandler exceptionCaught 
WARNING: Exception caught during RPC connection handshake. 
com.google.protobuf.InvalidProtocolBufferException: Protocol message tag had invalid wire type. 
     at com.google.protobuf.InvalidProtocolBufferException.invalidWireType(InvalidProtocolBufferException.java:78) 
     at com.google.protobuf.UnknownFieldSet$Builder.mergeFieldFrom(UnknownFieldSet.java:498) 
     at com.google.protobuf.GeneratedMessage$Builder.parseUnknownField(GeneratedMessage.java:438) 
     at com.googlecode.protobuf.pro.duplex.wire.DuplexProtocol$WirePayload$Builder.mergeFrom(DuplexProtocol.java:2565) 
     at com.googlecode.protobuf.pro.duplex.wire.DuplexProtocol$WirePayload$Builder.mergeFrom(DuplexProtocol.java:2450) 
     at com.google.protobuf.AbstractMessage$Builder.mergeFrom(AbstractMessage.java:300) 
     at com.google.protobuf.AbstractMessage$Builder.mergeFrom(AbstractMessage.java:238) 
     at com.google.protobuf.AbstractMessageLite$Builder.mergeFrom(AbstractMessageLite.java:202) 
     at com.google.protobuf.AbstractMessage$Builder.mergeFrom(AbstractMessage.java:738) 
     at com.google.protobuf.AbstractMessage$Builder.mergeFrom(AbstractMessage.java:238) 
     at org.jboss.netty.handler.codec.protobuf.ProtobufDecoder.decode(ProtobufDecoder.java:101) 
     at org.jboss.netty.handler.codec.oneone.OneToOneDecoder.handleUpstream(OneToOneDecoder.java:72) 
     at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:302) 
     at org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:317) 
     at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:299) 
     at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:216) 
     at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:274) 
     at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:261) 
     at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:349) 
     at org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:281) 
     at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:201) 
     at org.jboss.netty.util.internal.IoWorkerRunnable.run(IoWorkerRunnable.java:46) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
     at java.lang.Thread.run(Unknown Source) 
Смежные вопросы