I'm a little closer now...

After reading that the message type is toggled on whether or not the
content-length header is included,
http://activemq.apache.org/stomp.html, I dug in to the stomp gem and
found that it is hard coded to always send the content-length header.

    def _transmit(s, command, headers={}, body='')
      @transmit_semaphore.synchronize do
        s.puts command
        headers.each {|k,v| s.puts "#{k}:#{v}" }
        s.puts "content-length: #{body.length}"
        s.puts "content-type: text/plain; charset=UTF-8"
        s.puts
        s.write body
        s.write "\0"
      end

After removing the content-length header, it seems to work as
expected. Would the right way to implement this be to use camel to
convert the message type for messages I want to consume over the web?
Or for this specific case would it be appropriate to implement a case
in MessageListenerServlet to handle BytesMessages?



On Jan 6, 2008 3:08 PM, Archie Cowan <[EMAIL PROTECTED]> wrote:
> Hello,
>
> Using the latest AMQ 5.0.0 release and the ruby stomp-1.0.5 gem, I'm
> trying to send some messages via the example catstomp.rb script and
> receive the messages using the example javascript from
> http://activemq.apache.org/ajax.html. However, it doesn't appear that
> the message body is making it to the messages received on the
> javascript side.
>
> I send some messages like this to send the time every 5 seconds to the topic:
> while [ true ] ; do date ; sleep 5 ; done | ruby catstomp.rb
>
> Here's my javascript... pretty much copy and paste from the example:
>
> var myHandler = {
>   rcvMessage: function(message) {
>     alert("received "+message);
>   }
> };
> amq.addListener('web','topic://stompcat',myHandler.rcvMessage);
>
> Using firebug to examine the http response from amq, all I ever
> receive is a message with an empty body:
>
> <ajax-response>
> <response id='web' destination='topic://stompcat' ></response>
> </ajax-response>
>
> When I run the stompcat.rb script, I receive the message body:
>
> $ ruby stompcat.rb
> Connecting to stomp://localhost:61613 as
> Getting output from /topic/stompcat
> Sun Jan  6 14:50:07 EST 2008
> Sun Jan  6 14:50:12 EST 2008
> Sun Jan  6 14:50:17 EST 2008
> Sun Jan  6 14:50:22 EST 2008
> Sun Jan  6 14:50:27 EST 2008
>
> If I go to the topic in the activemq admin tool,
> http://localhost:8161/admin/topics.jsp, and send a message to the
> stompcat topic, I receive the message body in the javascript consumer
> as well as the stompcat.rb script.
>
> <ajax-response>
> <response id='web' destination='topic://stompcat' >Enter some text
> here for the message body...</response>
> </ajax-response>
>
> Is this supposed to work? It seems like there is something missing
> when sending from stomp and trying to receive via javascript. Any help
> would be most appreciated!
>
> Regards,
>
> Archie
>

Reply via email to