Jump to content

llHTTPRequest and Object to Object Communications


Sari6t
 Share

You are about to reply to a thread that has been inactive for 2657 days.

Please take a moment to consider if this thread is worth bumping.

Recommended Posts

 

So I have figured out how to make two object talk to each other using llHTTPRequest and that was 5 days learning but worth it. So many ways for it not to work.

I have a simple question and I think the answer is "yes" but just want to confirm before I do this. 

The prims communicate or "Chat" just fine across any number of sims , but the URL is subject to change, thus, llRequestUrl or something like that. I can solve that in a way that works for myself but if I was to sell my creation, read "Tardis", then it would really not be practical for a customer . 

So, the only way I can see of having this work is to use a real world server. In that way i can figure ot how to create a unique ID for each Tardis sold, but more imporantly , keep the parts all talking to each other. Am I right or is there a llThisWorksBetter functoin I missed. :)

You might be asking  "Why would you want to have a grid wide chat thingy?" Two reasons, one is to allow for actual "Chat" between a consle room on one sim and an Exterior on another. And two, to be able to send the "Dematerialzie" message to the exterior from the interior. Something that never gets old for me. :)

 

Cheers and thanks in advance

 

 

 

Link to comment
Share on other sites

The only alternative I can think of to using an external server is -- if it's appropriate to your situation -- to use the new(ish) Expreience Tools to store and read the URL as a KVP value.

That way, whenever the server script aquires a new URL it updates it as a KVP value, and whenever the client script can't communicate with the URL is has stored as a variable, it re-reads the KVP key.

I've used that, and it works well.   The only drawback is that people have to allow the experience to run on their land for it to work (and the owner of the experience needs to have a premium account).

  • Like 1
Link to comment
Share on other sites

Hmm thats interesting.

 

I know Hands of Omega use an experience. I wonder if thats part of why they do? 

NLS is the other that has this kind of functionality but I think they are likely server based.

 

Ok, I'll think about that, I hadn't thought about that. Thank you so much.

Hugs :)

Link to comment
Share on other sites

Unless you want to involve an external server, the cleanest way to build a grid-wide system is to use a grid-wide Experience and store the URL of your in-world server in KVP.  Unfortunately, that's not practical for making articles that you are going to sell all over SL, since nobody but Linden Lab can manage a grid-wide Experience.  The next best trick might be to have your in-world HTTP server update its URL to a backup that you can send an emergency e-mail to, if your Tardis objects can't reach the HTTP server directly. E-mail is a lot slower than HTTP, but if your objects only have to send an occasional "OK, where's the HTTP server now?" message, it's not too bad.

  • Like 1
Link to comment
Share on other sites

In world HTTP Server. Now there is something I want to learn about. DIdn't know there was such a thing.  

That might do the trick along with the email. I've read about using email in many threads, its a bit slow as you say but for an update 20 seconds is nothing. 

 

I will have a look around and see what I can learn. Thanks :)

Link to comment
Share on other sites

I have found this thing that sorts out persistant URL issues called, Grid URL Persist. 

http://gridurl.appspot.com/

It is a free API that can be setup on Google o rjust use their app. Anyway, does anyone know about or use this? 

Im not at all clear on how to integrate this with say the Object to Object LSL example or the more complex relay I have but even a simple working demo would be a wonderful learning tool.  

Well Im clear on the logic but the syntax is making my brain ache. Anyway back to pounding out another 100 ways for it not to work lol

 

Cheers

 

Link to comment
Share on other sites

For years before there was Experience KVP, I ran a network of HTTP-communicating objects that updated ethereal URLs using llEmail. It worked fine the vast majority of the time, but maybe once a month one of the sims would just stop delivering enqueued email, which was a mammoth pain. I doubt that's been fixed because it arose so very infrequently. So that means you probably do want some external registry service (but I don't have any relevant experience to share, sorry).

Just in passing and not relevant to this application: KVP is fast enough to be a good substrate for a broadcast messaging system, all by itself. That's what I'm using now in place of the whole HTTP network I'd implemented before -- but that's because my application is inherently broadcast, which is a perfect fit for KVP and always presented a challenge to work around the throttle on (point-to-point) HTTP.

  • Like 1
Link to comment
Share on other sites

Thank you so much for that. Since you set this up once already a quick question?

 

The URL that TINY is asking for, is that one of the generated llRequestURL() from SL that I use for this? I've inserted one and it all seems happy but after reseting  the script a few times I dont see it regestered as a click at TINY.

 

I'm still learning so maybe this is normal or I have to do something else. 

 

Thanks again , you have been super helpful. :)

Link to comment
Share on other sites

Ok I got it , it works !!! YAY

 

the URL updates in TINY after rests. SO cool. 

 

Thank you :)

 

So now I need to figure out what I need to replace in my relay script so that each prim uses this instead. any Hints? :)

 

I'm thinking htat if I can use the llHTTPRequest and stuff in what this script is doing in there for each prim then MAYBE it works. 

I'll try :)

Link to comment
Share on other sites

It works. I see the url change now on TiNY.

How do I get two objects to use the same URL from TINY? Each time I reset or rez one or the other , it gets the new URL and the other keeps the old one. arg...

 

THis is the same as just using the SL URL , but I know or thik its possible , just not sure how

Link to comment
Share on other sites

Well I spent 20 hours learning all the ways I can make it not work and keep learing more as I go. Stripping things from headers and whatnot is way past me at this point and I have given up on doing it all internal. 

 

So now I set up a mySQL DB and have the bare bones of SL interaction working. I can send some info to the DB and it stores it. 

To get two objects to communicated Im fuzzy on the logic. 

Do they SHARE a URL? Or do they rather need to have the other objects URL and vice versa in order to communicate? I think its the latter that is correct. 

Once I send a URL to the DB does that ever need updating? I think it would, I get the feeling URLS in SL are more than temporary but rather get deleted on resets etc. 

I imagine then that both objects would query the database on rez or every 30sec or both to get the current URL and that each object would have to have an ID to the other object and know that ID is the correct object so they know who they are talking too.

Then it all works right? lol

Where is the sample for that on Google? :) 

If I can get that to work though then there is a whole world of possibilities that can be built from that foundation. I haven't been abe to find teachers per se inworld and LSL in the RL is super limited but I will keep trying.

Last thing, does anyone know where people teach this stuff in world ?  

 

 

Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 2657 days.

Please take a moment to consider if this thread is worth bumping.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...