libp2p / js-libp2p-webrtc-star

libp2p WebRTC transport that includes a discovery mechanism provided by the signalling-star
https://libp2p.io
Other
320 stars 96 forks source link

How can i connect to browser with webrtc-star from browser ?? #372

Closed zababurinsv closed 3 years ago

zababurinsv commented 3 years ago

I create two client Alice & Bob

  const upgrader = {
    upgradeInbound: maConn => {

      console.log('upgradeInbound', maConn)
      return maConn
    },
    upgradeOutbound: maConn => {
      console.log('upgradeOutbound', maConn)
      return maConn
    }
  }

const defaults = {
      addresses: {
        // Add the signaling server address, along with our PeerId to our multiaddrs list
        // libp2p will automatically attempt to dial to the signaling server so that it can
        // receive inbound connections from other peers
        listen: [
          '/dns4/wrtc-star1.par.dwebops.pub/tcp/443/wss/p2p-webrtc-star',
          '/dns4/wrtc-star2.sjc.dwebops.pub/tcp/443/wss/p2p-webrtc-star'
        ]
      },
      modules: {
        transport: [Websockets, WebRTCStar],
        connEncryption: [NOISE],
        streamMuxer: [Mplex],
        peerDiscovery: [Bootstrap]
      },
      config: {
        peerDiscovery: {
          // The `tag` property will be searched when creating the instance of your Peer Discovery service.
          // The associated object, will be passed to the service when it is instantiated.
          [Bootstrap.tag]: {
            enabled: true,
            list: [
              '/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN',
              '/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb',
              '/dnsaddr/bootstrap.libp2p.io/p2p/QmZa1sAxajnQjVM8WjWXoMbmPd7NsWhfKsPkErzpm9wGkp',
              '/dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa',
              '/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt'
            ]
          }
        }
      }
    }

They see each other

  const idListener = await PeerId.createFromJSON(PeerListener)
      const libp2p = await createLibp2p({ peerId: idListener })
      const addr = multiaddr.multiaddr('/dns4/web3-star.herokuapp.com/tcp/443/wss/p2p-webrtc-star/p2p/QmcrQZ6RJdpYuGvZqD5QEHAv6qX4BrQLJLQPQUrTrzdcgm')

      const status = document.getElementById('status')
      const output = document.getElementById('output')

      const ws = new WStar({ upgrader })

      function log (txt) {
        console.info(txt)
        output.textContent += `${txt.trim()}\n`
      }

      output.textContent = ''

      // Listen for new peers
      libp2p.on('peer:discovery', (peerId) => {
        if('QmcrQZ6RJdpYuGvZqD5QEHAv6qX4BrQLJLQPQUrTrzdcgm' === peerId.toB58String()) {
          log(`Found peer ${peerId.toB58String()}`)
        }
      })

      // Listen for new connections to peers
      libp2p.connectionManager.on('peer:connect', (connection) => {
        if('QmcrQZ6RJdpYuGvZqD5QEHAv6qX4BrQLJLQPQUrTrzdcgm' === connection.remotePeer.toB58String()) {
          log(`Connected to ${connection.remotePeer.toB58String()}`)
        }
      })

      // Listen for peers disconnecting
      libp2p.connectionManager.on('peer:disconnect', (connection) => {
        if('QmcrQZ6RJdpYuGvZqD5QEHAv6qX4BrQLJLQPQUrTrzdcgm' === connection.remotePeer.toB58String()) {
          log(`Disconnected from ${connection.remotePeer.toB58String()}`)
        }
      })

      await libp2p.start()
      status.innerText = 'libp2p started!'
      log(`libp2p id is ${libp2p.peerId.toB58String()}`)

      const listener = ws.createListener((socket) => {
        console.log('new connection opened', socket)
        pipe(
          ['hello'],
          socket
        )
      })

      await listener.listen(addr)
      const socket = await ws.dial(addr)
      const values = await pipe(
        socket,
        collect
      )

What i must creating for send message ?