add benchmark and test, add net.Conn in subscriber.go instread of using websocket