rpc with callback via socket.io