fixes #18 - use websockets instead of ajax