Open a URL

Send the viewer to a web page from inside your app: in a new tab, with the stream still running, or in the current tab, which ends the stream. Your web page can open links itself; this is for when the app decides.

At a glance

Triggered fromWhat you callWorks on the production player today
iframeyour page opens links itself (window.open); there is no message to make the player do it—
Web SDKthe same: your page opens links itself—
Unrealthe plugin's E3DS Open Url / E3DS redirect To nodes, or {"cmd":"launchUrl",...} / {"cmd":"redirectTo",...}Yes

How the calls travel

The app sends the address; the player opens it. A new tab gets a reply sent back to the app saying whether it opened.

Demos

iframe

An embedding page that reacts to the app opening a link.

Demo coming soon

Web SDK

The same with the Web SDK.

Demo coming soon

How to do it

iframe

For a link in your own interface, open it yourself: window.open("https://example.com", "_blank"). Nothing needs to go through the stream.

When the app opens a link, the player in the frame opens it itself. Your page also receives the same command as a message, if you want to know:

window.addEventListener("message", function (e) {
  if (e.data && e.data.cmd === "launchUrl") {
    // the app opened e.data.value in a new tab - do not open it again
  }
});

redirectTo navigates the frame, not your page: the stream inside the frame ends and the frame shows the new address.

Web SDK

For a link in your own interface, open it yourself: window.open("https://example.com", "_blank").

When the app opens a link, the player opens it itself, and you are told:

e3ds_controller.callbacks.onResponseFromUnreal = function (raw) {
  var msg; try { msg = JSON.parse(raw); } catch (e) { return; }
  if (msg.cmd === "launchUrl") { /* opened msg.value - do not open it again */ }
};

Unreal

With the E3DS Features plugin: add BP_E3DS_PS_Actor to your level. Then call E3DS Open Url (new tab) or E3DS redirect To (this tab), with the full address starting https://. Other plugins also have an "Open URL" node: the right one's tooltip says Target is BPFL E3DS PS Functions.

Without the plugin: add a PixelStreamingInput component to an actor and send this with Send Pixel Streaming Response:

{"cmd":"launchUrl","value":"https://www.eagle3dstreaming.com"}
{"cmd":"redirectTo","value":"https://www.eagle3dstreaming.com"}

The reply. After launchUrl the player sends your app a message with result (success or failed), reason when it failed, and receivedMsg, the request it answers. redirectTo has no reply: the page, and the stream, are gone.

A new tab opens reliably only right after the viewer clicked or pressed a key. Trigger it from their input.

Troubleshooting

What you seeWhyWhat to do
Reply failed, reason invalid urlThe address has no scheme: www.example.com instead of https://www.example.com.Send the full address.
Reply failed, reason popup blocked or failed to openThe browser blocked the new tab: it did not follow a recent click or key press.Trigger it from the viewer's input.
The node compiles but does nothing when streamedAn "Open URL" node from another plugin.Use the one whose tooltip says Target is BPFL E3DS PS Functions.
The link opened twiceYour page opened it too when it saw the launchUrl message.The player already opened it; only log it.
The stream endedredirectTo leaves the page.Use launchUrl to keep the stream running.

Last updated