libp2p
Version:
JavaScript implementation of libp2p, a modular peer to peer network stack
32 lines (25 loc) • 693 B
text/typescript
import type { MessageStream } from '@libp2p/interface'
export function redirect (channelA: MessageStream, channelB: MessageStream): void {
channelA.addEventListener('message', (evt) => {
const sendMore = channelB.send(evt.data)
if (sendMore === false) {
channelA.pause()
channelA.addEventListener('drain', () => {
channelA.resume()
}, {
once: true
})
}
})
channelB.addEventListener('message', (evt) => {
const sendMore = channelA.send(evt.data)
if (sendMore === false) {
channelB.pause()
channelB.addEventListener('drain', () => {
channelB.resume()
}, {
once: true
})
}
})
}