File watching via websocket