Thanks for the help, I appreciate it

I think it's worth noting, for those that follow in my footsteps, that when 
you do a GET vs a RESTful endpoint you don't get raw bytes back.  The most 
expedient thing I found (and please set me straight if I'm wrong), was to 
declare the response type to be a blob then turn the blob into an array 
buffer, then deserialize that

Like so:

var xhr = new XMLHttpRequest();
xhr.open("GET",'http://localhost:8080/people.proto', true);
xhr.responseType = 'blob';
xhr.onload = function(e){
  if(this.status === 200){
    var arrBuff = null;
    var fileReader = new FileReader();
    fileReader.onload = function(){
      //here we've translated the blob into something our protobuf 
javascript can understand
      arrBuff = this.result;
      //here we get an object to work with
      var pkg = proto.package.MyPeopleProto.deserializeBinary(arrBuff);
    }
    //here we read the blob
    fileReader.readAsArrayBuffer(this.response);
  }
}




On Tuesday, February 21, 2017 at 7:44:04 AM UTC-9, Adam Cozzette wrote:
>
> Ok, that's good you were able to get things working with CommonJS-style 
> imports. To parse the raw bytes into an object you will want to call 
> MyProto.deserializeBinary(bytes).
>
> On Wed, Feb 15, 2017 at 3:42 PM, Gunnar Gissel - NOAA Federal <
> [email protected] <javascript:>> wrote:
>
>> FWIW, switching to commonjs style imports seems to work.
>>
>> Now I'm wondering how do I get from bytes to objects?  Passing the bytes 
>> into the generated constructor doesn't seem to work - I'm still seeing 
>> binary values where I expect to see textual values
>>
>> On Wed, Feb 15, 2017 at 10:20 AM, <[email protected] <javascript:>> 
>> wrote:
>>
>>> I don't expect that the code got pulled into the protobuf library 
>>> because I'm pulling the generated javascript files out of a jar created by 
>>> maven and using them on a box that has been set up solely for doing the 
>>> javascript side of things.  The protobuf install there is via npm, although 
>>> I had to add message.js and map.js files to the closure compiler to get it 
>>> working there.  It is possible I've gone about acquiring protobuf for my 
>>> javascript build entirely wrong, though.
>>>
>>> On Wednesday, February 15, 2017 at 10:16:42 AM UTC-9, [email protected] 
>>> wrote:
>>>>
>>>> Sure thing!
>>>>
>>>> Gruntfile.js:
>>>>
>>>> module.exports = function(grunt){
>>>>   
>>>>   require('google-closure-compiler').grunt(grunt);
>>>>
>>>>   grunt.initConfig({
>>>>     pkg: grunt.file.readJSON('package.json'),
>>>>     'closure-compiler': {
>>>>       my_target: {
>>>>         files: {
>>>>           'target/full.js': ['js/**.js']
>>>>         },
>>>>         options: {
>>>>           js: [
>>>>             'node_modules/google-closure-library/**.js', 
>>>>             '!node_modules/google-closure-library/**_test.js', 
>>>>             '!node_modules/google-closure-library/**_perf.js', 
>>>>             '!node_modules/google-closure-library/**tester.js', 
>>>>             
>>>> '!node_modules/google-closure-library/**promise/testsuiteadapter.js', 
>>>>             '!node_modules/google-closure-library/**osapi/osapi.js', 
>>>>             '!node_modules/google-closure-library/**svgpan/svgpan.js', 
>>>>             '!node_modules/google-closure-library/**alltests.js', 
>>>>             '!node_modules/google-closure-library/**node_modules**.js', 
>>>>             
>>>> '!node_modules/google-closure-library/**protractor_spec.js', 
>>>>             
>>>> '!node_modules/google-closure-library/**protractor.conf.js', 
>>>>             
>>>> '!node_modules/google-closure-library/**browser_capabilities.js', 
>>>>             '!node_modules/google-closure-library/doc/**.js', 
>>>>             'node_modules/google-protobuf/**.js',
>>>>             'js/missing-google-crap/message.js',
>>>>             'js/missing-google-crap/map.js',
>>>>             'js/person.js'
>>>>           ],
>>>>           compilation_level: 'SIMPLE',
>>>>           language_in: 'ECMASCRIPT5',
>>>>           create_source_map: 'target/full.js.map'
>>>>           
>>>>         }
>>>>       }
>>>>     }
>>>>   });
>>>>
>>>>
>>>>   grunt.registerTask('default', ['closure-compiler']);
>>>> }
>>>>
>>>>
>>>> The javascript is generated via Maven, so here is the command we are 
>>>> using:
>>>>
>>>>        <plugin>
>>>>               <groupId>com.github.os72</groupId>
>>>>               <artifactId>protoc-jar-maven-plugin</artifactId>
>>>>               <version>3.0.0</version>
>>>>               <executions>
>>>>                   <execution>
>>>>                       <phase>generate-sources</phase>
>>>>                       <goals>
>>>>                           <goal>run</goal>
>>>>                       </goals>
>>>>                       <configuration>
>>>>                           <protocVersion>3.0.0</protocVersion> 
>>>>                           <inputDirectories>
>>>>                               <include>src/main/resources/proto</include>
>>>>                           </inputDirectories>
>>>>                           <outputTargets>
>>>>                               <outputTarget>
>>>>                                   <type>java</type>
>>>>                                   <addSources>none</addSources>
>>>>                                   
>>>> <outputDirectory>src/main/gen</outputDirectory>
>>>>                               </outputTarget>
>>>>                               <outputTarget>
>>>>                                                            
>>>> <type>descriptor</type>
>>>>                                    <addSources>none</addSources>
>>>>                                    
>>>> <outputDirectory>src/main/resources/protoDesc/</outputDirectory>
>>>>                               </outputTarget>
>>>>                               <outputTarget>
>>>>                                            <type>js</type>
>>>>                                            <addSources>none</addSources>
>>>>                                            
>>>> <outputDirectory>src/main/resources/js/</outputDirectory>
>>>>                               </outputTarget>
>>>>                           </outputTargets>                
>>>>                       </configuration>
>>>>                   </execution>
>>>>               </executions>
>>>>            </plugin>
>>>>
>>>>
>>>>
>>>>
>>>> On Wednesday, February 15, 2017 at 9:40:03 AM UTC-9, Adam Cozzette 
>>>> wrote:
>>>>>
>>>>> If you could share your gruntfile that would be great. I would be 
>>>>> interested to know in particular the protoc command used to generate the 
>>>>> Javascript. Also it would be good to verify that the generated code for 
>>>>> that proto did not somehow get pulled into the protobuf build and end up 
>>>>> being part of the actual protobuf library.
>>>>>
>>>>> On Wed, Feb 15, 2017 at 9:10 AM, <[email protected]> wrote:
>>>>>
>>>>>> I've got some javascript generated from protoc and I'm trying to 
>>>>>> compile all those files together with closure-compiler so I can use them 
>>>>>> in 
>>>>>> a client app.
>>>>>>
>>>>>> I'm using Grunt and closure compiler and can provide my gruntfile and 
>>>>>> generated javascript if it would help.
>>>>>>
>>>>>> My problem is that the closure compiler gives me a namespace error 
>>>>>> for each type defined in the protobuf.
>>>>>>
>>>>>> ERROR - namespace 
>>>>>> "proto.gov.noaa.alaskafisheries.demoperson.protos.Person" cannot be 
>>>>>> provided twice
>>>>>> goog.provide(
>>>>>> 'proto.gov.noaa.alaskafisheries.demoperson.protos.Person');
>>>>>>
>>>>>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>>>>>
>>>>>> And so on for each type defined in the .proto.
>>>>>>
>>>>>> So far as I can tell these are only provided once in the generated 
>>>>>> file, and I've pared down my compilation attempt to that single file + 
>>>>>> the 
>>>>>> closure library and protobuf library files.
>>>>>>
>>>>>> I've googled the heck out of it and I'm stumped.  I've gotten 
>>>>>> everything working with https://github.com/dcodeIO/ProtoBuf.js/ but 
>>>>>> I'd like to be able to use google's generated code rather than bring in 
>>>>>> another library just for the javascript client.
>>>>>>
>>>>>> -- 
>>>>>> You received this message because you are subscribed to the Google 
>>>>>> Groups "Protocol Buffers" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>> send an email to [email protected].
>>>>>> To post to th
>>>>>
>>>>>
>>
>>
>> -- 
>> Gunnar Gissel
>>
>> Programmer
>> National Marine Fisheries
>> 907-586-7602
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Protocol Buffers" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> Visit this group at https://groups.google.com/group/protobuf.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to