Giter Site home page Giter Site logo

If you put data in a key with one gun instance, then change that data on another gun instance, the first instance will be unable to read the change about gun HOT 5 OPEN

ViteOrder avatar ViteOrder commented on September 13, 2024
If you put data in a key with one gun instance, then change that data on another gun instance, the first instance will be unable to read the change

from gun.

Comments (5)

amark avatar amark commented on September 13, 2024

Peering the 2 instances will work (erm... there's an example of how to do this buried somewhere)

But it may be pretty hard to do this without because it means the adapter has to be aware of changes/modifications to the filesystem, and it would need to know how to do this uniformly across all file systems (browser, cloud, desktop, etc.) which would complicate things pretty quickly.

Without peering, GUN has no way of knowing whether the 2 instances aren't actually separate machines, threads, processes, etc. do you have any clever ideas?

from gun.

draeder avatar draeder commented on September 13, 2024

If I'm not misunderstanding the issue and example, I believe that the desired use-case is what I did with Gunsafe CLI's sync functionality.

from gun.

ViteOrder avatar ViteOrder commented on September 13, 2024

I dont know about any of this peering buiness. For my usecase, if I were just able to be authed into multiple users on one instance, I'd be golden

Maybe if the put function had an option like this:
.put(data, undefined, {opt: {putAsUser: SEApair}})
now that would be perfect

from gun.

draeder avatar draeder commented on September 13, 2024

I think what you're looking for is GUN's Certify

from gun.

dirtboll avatar dirtboll commented on September 13, 2024

I've stumbled across this issue too when I tried to write unit tests for different gun instances with different users. After reading the localStorage.js I thought it was impossible to sync between two local peers only through the storage layer since gun only read the db once at "create" event (cmiiw). Soon it's confirmed by Mark that it needs peering. I also considered to use SEA.certify() but it gives me privacy issue for my use case since gun sends the certificate along with the associated public key for every put using it. Though I'm interested to know how to put for multiple user without login or certify.

For now, I just use peering as a workaround. I didn't aware that there's documented example to do this so I implemented my own. :/

Here's what I've come up with.

function makePeerFrom(gun) {
  let { mesh, pid } = gun.back("opt"), peer = {
     id: pid,
     wire: {
       send(msg) { if (msg) mesh.hear(msg, peer); }
     }
  }
  return peer
}

function doPeering(gun1, gun2) {
   let [peer1, peer2] = [makePeerFrom(gun1), makePeerFrom(gun2)]
   let [{mesh: mesh1}, {mesh: mesh2}] = [gun1.back("opt"), gun2.back("opt")]
   mesh1.hi(peer2)
   mesh2.hi(peer1)
}

I've updated the code from your example with my method, it now prints true twice.

from gun.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.