Skip to content
Snippets Groups Projects
app.js 1.32 KiB
Newer Older
  • Learn to ignore specific revisions
  • const Y = require("yjs")
    require("y-memory")(Y)
    require("y-array")(Y)
    require("y-text")(Y)
    require("./y-webrtc")(Y)
    
    Y({
      db: {
        name: "memory"
      },
      connector: {
        name: "webrtc",
        host: "localhost",
        port: 3000,
        path: "/api"
      },
      share: {
        textfield: "Text"
      }
    }).then(y => {
      y.share.textfield.bind(document.getElementById("textfield"))
    
      const userIDElem = document.getElementById("user-id")
      const peerIDElem = document.getElementById("peer-id")
      const peerButton = document.getElementById("peer-connect")
      const connectedP = document.getElementById("connected-peers")
    
      userIDElem.value = y.db.userId
    
      y.connector.onUserEvent(function(event) {
        switch (event.action) {
          case "userID":
            userIDElem.value = event.id
            break
          case "userJoined":
            var peerElem = document.createElement("li")
            peerElem.innerHTML = event.user
            connectedP.appendChild(peerElem)
            break
          case "userLeft":
            for (var peer of connectedP.children) {
              if (peer.innerHTML == event.user) {
                connectedP.removeChild(peer)
              }
            }
            break
        }
      })
    
      peerButton.onclick = function() {
        const peerID = peerIDElem.value
    
        if (peerID == "") {
          return
        }
    
        y.connector.connectToPeer(peerID)
    
        peerIDElem.value = ""