diff --git a/browser/websocket/socket.ts b/browser/websocket/socket.ts index 82c9f00..3df58dd 100644 --- a/browser/websocket/socket.ts +++ b/browser/websocket/socket.ts @@ -12,11 +12,12 @@ export function makeSocket() { */ export async function connect(socket: Socket): Promise { if (socket.connected) return; - socket.connect(); - return await new Promise((resolve) => + const waiting = new Promise((resolve) => socket.once("connect", () => resolve()) ); + socket.connect(); + await waiting; } /** websocketを切断する @@ -25,9 +26,8 @@ export async function connect(socket: Socket): Promise { */ export async function disconnect(socket: Socket): Promise { if (socket.disconnected) return; - socket.disconnect(); - return await new Promise((resolve) => { + const waiting = new Promise((resolve) => { const onDisconnect = (reason: Socket.DisconnectReason) => { if (reason !== "io client disconnect") return; resolve(); @@ -35,4 +35,6 @@ export async function disconnect(socket: Socket): Promise { }; socket.on("disconnect", onDisconnect); }); + socket.disconnect(); + await waiting; }