I have a Ruby script which publishes a message to an ActiveMQ topic via Stomp. I'm attempting to send these messages to the topic used by the demo chat.html included in ActiveMQ, so I'm using the XML message format expected by that page. chat.html is this one : http://fisheye6.atlassian.com/browse/activemq/branches/activemq-5.3/activemq-web-demo/src/main/webapp/chat.html?r=HEAD

This is the publisher script:
--- START -------------------------------------
#!/usr/bin/env ruby

require 'rubygems'
require 'stomp'

conn = Stomp::Client.open("", "", "dev-1-dist1", 3037, false)

puts 'join'
conn.send('/topic/CHAT.DEMO', "<message type='join' from='alexbot'/>")
sleep 3

puts 'sent 1'
conn.send('/topic/CHAT.DEMO', "<message type='chat' from='alexbot'>test one</message>")
sleep 3

puts 'left'
conn.send('/topic/CHAT.DEMO', "<message type='leave' from='alexbot' />")
--- END -------------------------------------

I have another Ruby script subscribed to this topic as well.
--- START -----------------------------------
#!/usr/bin/env ruby

require 'rubygems'
require 'stomp'
require 'activesupport'
require 'cgi'

conn = Stomp::Client.open("", "", "dev-1-dist1", 3037, false)

conn.subscribe('/topic/CHAT.DEMO') do |msg|
  puts "#{Time.now}: #{msg.body}"
end

conn.join
--- END -------------------------------------

My test is:
1. Browse to http://dev-1-dist1:8161/demo/chat.html
2. Join the chat room.
3. Start my Ruby subscriber
4. Start my Ruby publisher.

Results:
In the Ruby subscriber, I see all my messages. I see none of them in the chat room.

Instead, Firebug shows that empty messages are being received.
From Firebug:
GET http://dev-1-dist1:8161/demo/amq 200 OK 2.66s
GET http://dev-1-dist1:8161/demo/amq 200 OK 2.9s
GET http://dev-1-dist1:8161/demo/amq 200 OK 2.93s

As I watch Firebug and my Ruby publisher in separate windows, I can see that the GET requests are in sync with when the Ruby script is sending its messages. chat.html is receiving the messages. The contents of the messages are empty, however.
Example:
<ajax-response> <response id='chat' destination='topic://CHAT.DEMO' ></ response> </ajax-response>

A message that I send from chat.html does have content, and I do receive those in both Javascript and in Ruby.
Example:
<ajax-response> <response id='chat' destination='topic://CHAT.DEMO' ><message type='chat' from='alex'>test message</message></response> </ ajax-response>

At the same time that I get these empty responses in chat.html, I get the following output from my Ruby subscriber (and from my own submission via chat.html):
Fri Jul 09 13:35:04 -0500 2010: <message type='join' from='alexbot'/>
Fri Jul 09 13:35:07 -0500 2010: <message type='chat' from='alexbot'>test one</message> Fri Jul 09 13:35:10 -0500 2010: <message type='chat' from='alexbot'>test two</message> Fri Jul 09 13:35:13 -0500 2010: <message type='chat' from='alexbot'>test three</message>
Fri Jul 09 13:35:16 -0500 2010: <message type='leave' from='alexbot' />
Fri Jul 09 13:37:28 -0500 2010: <message type='chat' from='alex'>test message</message>

Any idea what's going on here? There are no proxies involved this time. All clients are connecting directly to ActiveMQ/Jetty.

thanks,
alex

Environment:
client:
Mac OSX 10.5.6
Firefox 3.6

server:
Centos 5.4
ActiveMQ 5.3.0
java version "1.5.0_03"
Ruby 1.8.7 with stomp-1.0.4 gem

Reply via email to