robert_b_clarke
robert_b_clarke

Reputation: 1513

Mojolicious websocket request query string

I'm experiencing unexpected behaviour while trying to access query string parameters in a mojolicious websocket request. Say my request looks like this:

ws://127.0.0.1:3000/websock_action?item_id=1234

Then in my mojo controller code I try and get the value of item_id in any of the following ways:

#in mojo controller
my $item_id = $self->param('item_id');
my $item_id = scalar $self->param('item_id');
my $item_id = scalar $self->tx->req->url->query->param('item_id');

The issue is that the item_id I get is often from a previous request, whichever of these techniques I use. My app is currently being served with hypnotoad.

Are query string parameters supported on websocket requests in mojolicious? Is there a more reliable way to access them? Essentially I'd like to know if I'm trying to something that isn't supported, so I can know whether the problem is something specific to my app.

Thanks in advance for any help

Upvotes: 1

Views: 549

Answers (1)

user3043717
user3043717

Reputation: 37

I suspect that what is happening, is that the parameters are passed in the html request, which is then upgraded to a websocket request at which point they are no longer available.

As Daren said, pass the data in the Web-Socket data. Something like...

var ws = $.websocket("ws://127.0.0.1:3000/websock_action", {
  events: { message: function(e) {}
});
ws.send('message', 1234);

Upvotes: 1

Related Questions