Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -24,42 +24,6 @@ function stompClient(onConnect: (c: Client) => void, onStatus?: (connected: bool
|
|||||||
return client
|
return client
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 스팟 채팅용 STOMP 클라이언트.
|
|
||||||
* connect 후 스팟 토픽을 구독하고, send 로 메시지를 전송한다.
|
|
||||||
*/
|
|
||||||
export function createSpotChat(
|
|
||||||
spotId: number,
|
|
||||||
onMessage: (m: ChatMessage) => void,
|
|
||||||
onStatus?: (connected: boolean) => void,
|
|
||||||
) {
|
|
||||||
const client = new Client({
|
|
||||||
brokerURL: wsUrl(),
|
|
||||||
connectHeaders: { Authorization: `Bearer ${tokenStore.get() ?? ''}` },
|
|
||||||
reconnectDelay: 3000,
|
|
||||||
onConnect: () => {
|
|
||||||
onStatus?.(true)
|
|
||||||
client.subscribe(`/topic/spots/${spotId}`, (msg: IMessage) => {
|
|
||||||
onMessage(JSON.parse(msg.body) as ChatMessage)
|
|
||||||
})
|
|
||||||
},
|
|
||||||
onDisconnect: () => onStatus?.(false),
|
|
||||||
onWebSocketClose: () => onStatus?.(false),
|
|
||||||
})
|
|
||||||
|
|
||||||
return {
|
|
||||||
activate: () => client.activate(),
|
|
||||||
deactivate: () => client.deactivate(),
|
|
||||||
send: (content: string) => {
|
|
||||||
client.publish({
|
|
||||||
destination: `/app/spots/${spotId}/chat`,
|
|
||||||
body: JSON.stringify({ content }),
|
|
||||||
})
|
|
||||||
},
|
|
||||||
isConnected: () => client.connected,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 매칭 수락으로 열린 1:1 채팅용 STOMP 클라이언트. */
|
/** 매칭 수락으로 열린 1:1 채팅용 STOMP 클라이언트. */
|
||||||
export function createMatchChat(
|
export function createMatchChat(
|
||||||
matchId: number,
|
matchId: number,
|
||||||
|
|||||||
Reference in New Issue
Block a user