javascript bindings connecting to a qpid c++ broker
I'm getting a connection error when using the javascript bindings example recv.js to receive a message through a qpid c++ broker. I have a qpid c++ broker running on a remote host with a queue named eaq. I'm attempting to start up the javascript example recv.js using the remote address/queue, but I'm getting a connection error: [eallen@redhat javascript]$ node recv.js amqp://my.remote.host.com/eaq that._checkErrors = true error = 3,111,ECONNREFUSED: Connection refused { [MessengerError: ECONNREFUSED: Connection refused] name: 'MessengerError', message: 'ECONNREFUSED: Connection refused' } I've tried variations on the address string (without the amqp://, with the ip address, with a ~) but to no avail. Notes: - The proton c examples recv and send work just fine with my broker running on the remote host and queue. I also tried the python and ruby bindings and they worked. - Also, the javascript bindings programs recv.js and send.js work fine together when going through amqp://0.0.0.0 - When I start recv.js (using the default amqp://0.0.0.0), and send a message using either the c send example or one of the other language bindings send example programs, I get an error: [eallen@redhat py]$ ./send.py Hello [0xb1d650]:ERROR[-2] SASL header mismatch: '' CONNECTION ERROR connection aborted (remote) - I'm also getting the same connection refused error when running the qpid-config.js example against a broker. Could this be a problem with my build or environment? Or is this a bug? Thanks, -Ernie
Re: javascript bindings connecting to a qpid c++ broker
Hey Ernie, You did read what I put in my previous response about the JavaScript bindings using a *WebSocket* transport didn't you? send.js and recv.js won't talk *directly* to the C++ broker, however I've included a simple WebSocket-TCP Socket proxy. If you stand up proxy.js that should proxy WS port 5673 to TCP port 5672 (you can change the defaults using command line parameters do node proxy.js -h to see) Something like ./proxy.js Proxying ws - tcp Forwarding port 5673 to 0.0.0.0:5672 ./recv.js amqp://localhost:5673/eaq ./send.js -a amqp://localhost:5673/eaq JavaScript is a bit funny like that :-) I mentioned on my TODO list that I want to look at native TCP sockets for node, but the main reason for doing JavaScript is really to get AMQP working in a browser and for that WebSockets are pretty much the only reasonable transport - though Chrome packaged apps allow TCP connections. The Java Broker has a WebSocket transport so I can talk directly to that, though that has its own quirks at the moment. Almost certainly the fact that it's a WebSocket transport is the cause of what you are seeing. Frase On 27/08/14 20:34, Ernest Allen wrote: I'm getting a connection error when using the javascript bindings example recv.js to receive a message through a qpid c++ broker. I have a qpid c++ broker running on a remote host with a queue named eaq. I'm attempting to start up the javascript example recv.js using the remote address/queue, but I'm getting a connection error: [eallen@redhat javascript]$ node recv.js amqp://my.remote.host.com/eaq that._checkErrors = true error = 3,111,ECONNREFUSED: Connection refused { [MessengerError: ECONNREFUSED: Connection refused] name: 'MessengerError', message: 'ECONNREFUSED: Connection refused' } I've tried variations on the address string (without the amqp://, with the ip address, with a ~) but to no avail. Notes: - The proton c examples recv and send work just fine with my broker running on the remote host and queue. I also tried the python and ruby bindings and they worked. - Also, the javascript bindings programs recv.js and send.js work fine together when going through amqp://0.0.0.0 - When I start recv.js (using the default amqp://0.0.0.0), and send a message using either the c send example or one of the other language bindings send example programs, I get an error: [eallen@redhat py]$ ./send.py Hello [0xb1d650]:ERROR[-2] SASL header mismatch: '' CONNECTION ERROR connection aborted (remote) - I'm also getting the same connection refused error when running the qpid-config.js example against a broker. Could this be a problem with my build or environment? Or is this a bug? Thanks, -Ernie
Re: javascript bindings connecting to a qpid c++ broker
Ah, well that would explain it. Thanks! - Original Message - From: Fraser Adams fraser.ad...@blueyonder.co.uk To: proton@qpid.apache.org Sent: Wednesday, August 27, 2014 5:53:55 PM Subject: Re: javascript bindings connecting to a qpid c++ broker Hey Ernie, You did read what I put in my previous response about the JavaScript bindings using a *WebSocket* transport didn't you? send.js and recv.js won't talk *directly* to the C++ broker, however I've included a simple WebSocket-TCP Socket proxy. If you stand up proxy.js that should proxy WS port 5673 to TCP port 5672 (you can change the defaults using command line parameters do node proxy.js -h to see) Something like ./proxy.js Proxying ws - tcp Forwarding port 5673 to 0.0.0.0:5672 ./recv.js amqp://localhost:5673/eaq ./send.js -a amqp://localhost:5673/eaq JavaScript is a bit funny like that :-) I mentioned on my TODO list that I want to look at native TCP sockets for node, but the main reason for doing JavaScript is really to get AMQP working in a browser and for that WebSockets are pretty much the only reasonable transport - though Chrome packaged apps allow TCP connections. The Java Broker has a WebSocket transport so I can talk directly to that, though that has its own quirks at the moment. Almost certainly the fact that it's a WebSocket transport is the cause of what you are seeing. Frase On 27/08/14 20:34, Ernest Allen wrote: I'm getting a connection error when using the javascript bindings example recv.js to receive a message through a qpid c++ broker. I have a qpid c++ broker running on a remote host with a queue named eaq. I'm attempting to start up the javascript example recv.js using the remote address/queue, but I'm getting a connection error: [eallen@redhat javascript]$ node recv.js amqp://my.remote.host.com/eaq that._checkErrors = true error = 3,111,ECONNREFUSED: Connection refused { [MessengerError: ECONNREFUSED: Connection refused] name: 'MessengerError', message: 'ECONNREFUSED: Connection refused' } I've tried variations on the address string (without the amqp://, with the ip address, with a ~) but to no avail. Notes: - The proton c examples recv and send work just fine with my broker running on the remote host and queue. I also tried the python and ruby bindings and they worked. - Also, the javascript bindings programs recv.js and send.js work fine together when going through amqp://0.0.0.0 - When I start recv.js (using the default amqp://0.0.0.0), and send a message using either the c send example or one of the other language bindings send example programs, I get an error: [eallen@redhat py]$ ./send.py Hello [0xb1d650]:ERROR[-2] SASL header mismatch: '' CONNECTION ERROR connection aborted (remote) - I'm also getting the same connection refused error when running the qpid-config.js example against a broker. Could this be a problem with my build or environment? Or is this a bug? Thanks, -Ernie