rsnext/examples/with-stomp/useStomp.js

30 lines
679 B
JavaScript
Raw Normal View History

import { useState, useEffect, useCallback } from 'react'
import useClient from './useClient'
2020-05-18 21:24:37 +02:00
const useStomp = (topic) => {
const [message, setMessage] = useState({})
const client = useClient()
// subscribe to a channel, then listen to the messages.
const subscribe = useCallback(() => {
2020-05-18 21:24:37 +02:00
client.subscribe(topic, (msg) => {
const change = JSON.parse(msg.body)
setMessage(change)
})
}, [client, topic])
// unsubscribe on unmount
const unSubscribe = useCallback(() => {
client.unsubscribe()
}, [client])
useEffect(() => {
subscribe()
return unSubscribe
}, [subscribe, unSubscribe])
return message
}
export default useStomp