{"id":25302087,"url":"https://github.com/shivamycodee/dchat-app-git","last_synced_at":"2025-06-25T05:43:19.761Z","repository":{"id":153111427,"uuid":"604052216","full_name":"Shivamycodee/dchat-app-git","owner":"Shivamycodee","description":null,"archived":false,"fork":false,"pushed_at":"2023-04-11T06:19:52.000Z","size":5955,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-13T06:51:34.152Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://dchat-app-git.vercel.app","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Shivamycodee.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-02-20T08:30:00.000Z","updated_at":"2023-02-24T13:28:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"d73b0f98-1334-457d-b3ab-5927b4392478","html_url":"https://github.com/Shivamycodee/dchat-app-git","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shivamycodee%2Fdchat-app-git","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shivamycodee%2Fdchat-app-git/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shivamycodee%2Fdchat-app-git/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shivamycodee%2Fdchat-app-git/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shivamycodee","download_url":"https://codeload.github.com/Shivamycodee/dchat-app-git/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247578238,"owners_count":20961241,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-13T06:51:01.810Z","updated_at":"2025-04-07T01:33:20.248Z","avatar_url":"https://github.com/Shivamycodee.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"import React,{useState,useEffect} from 'react'\nimport Card from 'react-bootstrap/Card'\nimport Badge from 'react-bootstrap/Badge'\n\n\nimport libp2p,{ createLibp2p } from \"libp2p\";\nimport { webRTCStar } from \"@libp2p/webrtc-star\";\nimport {noise} from \"@chainsafe/libp2p-noise\"\nimport {mplex} from '@libp2p/mplex'\nimport { Multiaddr } from \"multiaddr\";\nimport { webSockets } from \"@libp2p/websockets\";\nimport { kadDHT } from \"@libp2p/kad-dht\";\nimport { floodsub } from \"@libp2p/floodsub\";\nimport { bootstrap } from \"@libp2p/bootstrap\";\nimport { peerIdFromString, PeerId } from \"@libp2p/peer-id\";\n\n\nimport { fromString as uint8ArrayFromString } from \"uint8arrays/from-string\";\nimport { toString as uint8ArrayToString } from \"uint8arrays/to-string\";\n\n\n function chatCore() {\n \n  const [nodE,setNodE] = useState();\n  const [peers,setPeers] = useState()\n  const [peerId,setPeerId] = useState();\n  const [msg,setMsg] =  useState();\n  \n  const start = async()=\u003e{\n    \n    try{\n\n      const wrtcStar = webRTCStar();\n     const node = await createLibp2p({\n        addresses: {\n          // Add the signaling server address, along with our PeerId to our multiaddrs list\n          // libp2p will automatically attempt to dial to the signaling server so that it can\n          // receive inbound connections from other peers\n          listen: [\n            \"/dns4/wrtc-star1.par.dwebops.pub/tcp/443/wss/p2p-webrtc-star\",\n            // \"/dns4/wrtc-star2.sjc.dwebops.pub/tcp/443/wss/p2p-webrtc-star\",\n          ],\n        },\n        transports: [webSockets(), wrtcStar.transport],\n        connectionEncryption: [noise()],\n        streamMuxers: [mplex()],\n        peerDiscovery: [\n          wrtcStar.discovery,\n          bootstrap({\n            list: [\n              \"/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN\",\n              \"/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb\",\n              \"/dnsaddr/bootstrap.libp2p.io/p2p/QmZa1sAxajnQjVM8WjWXoMbmPd7NsWhfKsPkErzpm9wGkp\",\n              \"/dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa\",\n              \"/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt\",\n            ],\n          }),\n        ],\n        dht: kadDHT(),\n        // we add the Pubsub module we want\n        pubsub: floodsub(),\n      });\n\n      node.start();\n      setNodE(node);\n        \n\n    const madd  = node.getMultiaddrs()\n    alert(madd);\n    setPeerId(madd.toString().slice(65, -1));\n\n\n      // Listen for new peers\n      node.addEventListener(\"peer:discovery\", (evt) =\u003e {\n        const peer = evt.detail;\n        console.log(`Found peer ${peer.id.toString()}`)\n\n        // console.warn(\"evt.detail.id :\",typeof(evt.detail.id));\n        // dial them when we discover them\n        node.dial(evt.detail.id).catch((err) =\u003e {\n          console.log(`Could not dial ${evt.detail.id}`, err);\n        });\n      });\n\n      // Listen for new connections to peers\n      node.connectionManager.addEventListener(\"peer:connect\", (evt) =\u003e {\n        const connection = evt.detail;\n        console.log(`Connected to ${connection.remotePeer.toString()}`);\n      });\n\n      // Listen for peers disconnecting\n      node.connectionManager.addEventListener(\"peer:disconnect\", (evt) =\u003e {\n        const connection = evt.detail;\n        console.log(`Disconnected from ${connection.remotePeer.toString()}`)\n      });\n\n//     node.pubsub.subscribe(\"opposite of god\");\n\n// node.pubsub.addEventListener(\"message\", (evt) =\u003e {\n//   console.warn(\"message receiver runs\")\n//   setMsg(uint8ArrayToString(evt.detail.data));\n//   console.warn(`data received: ${uint8ArrayToString(evt.detail.data)} on topic ${evt.detail.topic}`)\n//   // store(\n//   //   `\u003c\u003c-- ${uint8ArrayToString(evt.detail.data)} on topic ${evt.detail.topic}`\n//   // );\n// });\n\n}catch(e){console.log(\"try error: \",e)}\n  \n} // end of start\n\n\n  const listenMessage = async()=\u003e{\n\n    console.log(\"listen msg running\")\n   \n     nodE.pubsub.subscribe(\"opposite of god\");\n\n     nodE.pubsub.addEventListener(\"message\", (evt) =\u003e {\n\n       console.log(\"message receiver runs\");\n\n       setMsg(uint8ArrayToString(evt.detail.data));\n       console.log(\n         `data received: ${uint8ArrayToString(evt.detail.data)} on topic ${\n           evt.detail.topic\n         }`\n       );\n       // store(\n       //   `\u003c\u003c-- ${uint8ArrayToString(evt.detail.data)} on topic ${evt.detail.topic}`\n       // );\n     });\n\n\n  }\n\n    const find = async (aPeerId) =\u003e {\n       //connect to peer\n       const anId = peerIdFromString(aPeerId);\n       const hasData = Boolean(nodE.peerStore.get(anId));\n\n       alert(`has found peer: ${hasData}`);\n     };\n\n    const send = async (_msg) =\u003e {\n      console.log(\"send running\")\n      nodE.pubsub.publish(\"opposite of god\", uint8ArrayFromString(_msg))\n         .catch((err) =\u003e {\n           console.error(\"err of send :   \",err);\n         })\n         .then(() =\u003e {\n           //  store(\"--\u003e\u003e \" + msg);\n         });\n     };\n\n    // const store = (m) =\u003e {\n    //    const arr = state.log;\n    //    if (arr.length \u003e 50) arr.shift();\n    //    arr.push(m);\n    //    setState({ log: arr });\n    //  };\n\n    const connect = async()=\u003e{\n\n      const peerMultiaddr = {\n        family: \"ipv4\",\n        address: \"/dns4/wrtc-star1.par.dwebops.pub\",\n        port: 443,\n        transport: \"tcp\",\n        peerId: peers,\n      };\n      \n      // peerId: `/p2p/`+peers,\n       alert(peers)\n      const connection = await nodE.dial(peers);\n     console.warn(\"connecting to node : \",connection)\n  const stream = connection.newStream()\n  stream.write('Hello, world!')\n  stream.end()\n\n    }\n\n  const listenStream = async()=\u003e{\n      console.warn(\"listening stream\")\n     stream.on(\"data\", (data) =\u003e {\n       console.warn(\"Received:\", data.toString());\n     });\n  }\n\n    useEffect(()=\u003e{\n\n     console.log(\"useEffect for msg\",msg)\n    },[msg])\n\n  \n    return (\n      \u003c\u003e\n        \u003cdiv className=\"peerHolder\"\u003e\n          \u003cdiv\u003e\n            \u003ch1\u003e\n              Your ID{\" \"}\n              \u003cBadge bg=\"secondary\" as=\"Button\"\u003e\n                {peerId}\n              \u003c/Badge\u003e\n            \u003c/h1\u003e\n          \u003c/div\u003e\n          \u003cdiv className=\"input-group mb-3\"\u003e\n            \u003cinput\n              type=\"text\"\n              className=\"form-control\"\n              placeholder=\"Friend Id\"\n              aria-label=\"Friend Id\"\n              aria-describedby=\"button-addon2\"\n              onChange={(e) =\u003e\n                setPeers(\n                  `/dns4/wrtc-star1.par.dwebops.pub/tcp/443/wss/p2p-webrtc-star/p2p/` +\n                    e.target.value\n                )\n                // setPeers(e.target.value)\n              }\n            /\u003e\n            \u003cdiv className=\"input-group-append\"\u003e\n              \u003cbutton\n                className=\"btn btn-outline-secondary\"\n                type=\"button\"\n                id=\"button-addon2\"\n                // onClick={()=\u003efind()}\n                onClick={() =\u003e connect()}\n              \u003e\n                connect\n              \u003c/button\u003e\n            \u003c/div\u003e\n          \u003c/div\u003e\n\n          \u003cdiv className=\"input-group\"\u003e\n            \u003ctextarea\n              className=\"form-control\"\n              placeholder=\"Chats...\"\n              aria-label=\"Chats\"\n              value={msg}\n            \u003e\u003c/textarea\u003e\n          \u003c/div\u003e\n\n          \u003cdiv className=\"input-group mb-3\"\u003e\n            \u003cinput\n              type=\"text\"\n              className=\"form-control\"\n              placeholder=\"message...\"\n              aria-label=\"message...\"\n              aria-describedby=\"button-addon2\"\n            /\u003e\n            \u003cdiv className=\"input-group-append\"\u003e\n              \u003cbutton\n                className=\"btn btn-outline-secondary\"\n                type=\"button\"\n                id=\"button-addon2\"\n                onClick={() =\u003e send(\"it's working on friday\")}\n              \u003e\n                send\n              \u003c/button\u003e\n            \u003c/div\u003e\n            \u003cbutton className=\"btn btn-secondary\" onClick={() =\u003e start()}\u003e\n              start\n            \u003c/button\u003e\n            \u003cbutton\n              className=\"btn btn-secondary\"\n              onClick={() =\u003e listenMessage()}\n              // onClick={() =\u003e listenStream()}\n            \u003e\n              listen\n            \u003c/button\u003e\n          \u003c/div\u003e\n\n          {/* \u003cinput id=\"usrVal\" onChange={(e) =\u003e setPeers(e.target.value)} /\u003e */}\n          {/* \u003cbutton onClick={() =\u003e send(\"fuck u\")}\u003esend\u003c/button\u003e */}\n          {/* \u003cbutton onClick={() =\u003e find(peers)}\u003efind\u003c/button\u003e */}\n        \u003c/div\u003e\n      \u003c/\u003e\n    );\n}\n\nexport default chatCore;\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshivamycodee%2Fdchat-app-git","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshivamycodee%2Fdchat-app-git","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshivamycodee%2Fdchat-app-git/lists"}