Both seems fine. Although, if you want to restrict the websocket handler to a specific url, without using an interceptor, you can wrap it in another handler. Example:
var websocketHandler = webSocketHandler((webSocket) {
webSocket.listen((message) {
print('Server: ' + message);
webSocket.add('pong');
});
});
void main() {
app.setupConsoleLog();
app.setShelfHandler((req) {
if (req.url.path.startsWith("/ws")) {
return websocketHandler(req);
}
return new shelf.Response.notFound("not_found");
});
app.start();
}
You can also wrap more than one handler. For example, if you want to use shelf_web_socket and shelf_static:
var websocketHandler = webSocketHandler((webSocket) {
webSocket.listen((message) {
print('Server: ' + message);
webSocket.add('pong');
});
});
var staticHandler = createStaticHandler("/web");
void main() {
app.setupConsoleLog();
app.setShelfHandler((req) {
if (req.url.path.startsWith("/ws")) {
return websocketHandler(req);
}
return staticHandler(req);
});
app.start();