On Mon, 27 Mar 2017 12:07:06 GMT, Sönke Ludwig wrote:

On Fri, 24 Mar 2017 19:25:38 +0100, Markus wrote:

Hi,

I'am new to vibe.d and are playing around with the chat-server tutorial.
My client uses angular2 and I notice a strange behavior:

The /ws or /ws/ websocket endpoint returns a 302. I reduced the code, so
that no addional parameters are needed, but the behavior resists. If I
define the route explizit, everything works as aspected:

auto router = new URLRouter;
auto ws = new WebChat;
router.registerWebInterface(ws);
router.get("/ws2/", handleWebSockets(&ws.getWs));

The new /ws2/ endpoint works well.

What am I doing wrong?

Regards

Markus

The web interface generator adds convenience redirects for all routes by default ([WebInterfaceSettings.ignoreTrailingSlash][1]), so that a route with path "/foo" can also be accessed as "/foo/" or vice-versa. For web sockets this might be an issue (haven't tested that case yet), but if you particularly need the "/ws/" path be accessible without a redirect, adding an explicit @path("/ws/") to the getWS route should achieve that.

[1]: https://vibed.org/api/vibe.web.web/WebInterfaceSettings.ignoreTrailingSlash

Thank you very much. This was the reason. I added the explicit @path("/ws/") and all works well.