Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Send message from web containers to the parent app #66

Open
gliechtenstein opened this issue Jul 22, 2017 · 4 comments
Open

Send message from web containers to the parent app #66

gliechtenstein opened this issue Jul 22, 2017 · 4 comments

Comments

@gliechtenstein
Copy link
Contributor

Currently web containers are a one way thing. You cannot call a Jasonette action from inside web container, for example.

Making this two-way could be helpful.

@copongcopong
Copy link

WebView sending "Jason" to parent app, could probably trigger new view and same flow; Doing a data messaging back and forth would need a different approach.

@gliechtenstein
Copy link
Contributor Author

@copongcopong great point, I was thinking about just starting out with implementing actions. It's still just idea stage though. Trying to think of some critical use cases.

@jxsp
Copy link

jxsp commented Jul 27, 2017

I will be watching this issue, as I mentioned this is pretty useful for me - but I agree that use cases should be critical, will let you know if I know some very specific ones (too late at night to think about that right now :)). Checking out the other issues now to see if there is something that I can help out with over the weekend.

@gliechtenstein
Copy link
Contributor Author

This feature is coming soon. Just updating here with a bit of more info on how it's implemented so we can document it:


This feature allows a web container to reach outside of its own sandbox and call its parent Jasonette native app's JASON actions, simply by calling:

JASON.call(/****JASON ACTION****/)

from its javascript. You just need to pass the same action JSON as an argument. Here's an example:

{
  "type": "html",
  "text": "<html><script>var t= {name: 'cat'}; JASON.call({trigger:\"add\",options:t})</script></html>"
}

Another example:

{
  "type": "html",
  "text": "<html><script>JASON.call({type:\"$util.alert\",options:{title: 'alert', description: 'this is an alert'}})</script></html>"
}

screen shot 2017-08-07 at 11 46 55 am


This is part 1 of the full IPC architecture as it addresses only the webcontainer ==> Jasonette direction communication.

The part 2, which is the opposite direction (Jasonette ==> web container), is much more complicated and involves introduction of multiple APIs since it needs ways to describe how to:

  1. Identify each web container component with a unique identifier
  2. Keep track of all the web containers that can be messaged
  3. Dispatch a Javascript function call to only the intended web container

Part 1 is already useful for many cases and it looks like Part 2 will take some time to figure out, which is why it's broken down into two parts. The part 2 will be a separate PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants