Not sure if this helps, but I've been experimenting with zmq in node as well and have made some observations:
I am running using four machines:
1: OS X 10.8.3
2: Ubuntu 12.10 in VM (bridged)
3: Ubuntu 12.04 separate machine
4: Ubuntu 12.04 separate machine
When I start the same test server on all machines (not too dissimilar from your code above) Machine 1: sees updates from machine 3 and 4 Machine 2: sees updates from 1, 2, 3, and 4 Machine 3: sees updates from 1, 3, 4 Machine 4: sees updates from 1, 3, 4
so it seems like OS X blocks broadcasts to itself. Ubuntu 12.10 in the VM is getting everyone's but having problems sending (possibly related to running in the VM?) and the other machines are getting their own.
My server/client:
os = require 'os'
zmq = require 'zmq'
client = zmq.socket "sub"
server = zmq.socket "pub"
client.connect "epgm://224.0.0.1:5555", (error) ->
if error?
console.log "client error:", error
client.subscribe ""
client.on "message", (buffer) ->
console.log "received ping:", buffer.toString!
server.bind "epgm://224.0.0.1:5555", (error) ->
if error?
console.log "server error:", error
setInterval ( ->
server.send "#{os.hostname!}"
), 1000
process.on "SIGINIT", ->
client.close!
server.close!
process.exit!