Has someone ever tried to use WebRTC with Elm

I would like to build a video chat application that utilizes WebRTC. To stay responsive I will implement this application as a SPA.
Now, I know that Elm can handle the SPA use case well, and got even better with the 0.19 release. But I have nothing found about WebRTC yet. Has someone experience with this? Is there a blog post I did not found?

AFAIK there are no Elm libraries that currently make it ā€˜easyā€™ to work with WebRTC in Elm.

However, the WebRTC JavaScript calls are already quite high-level, and you could relatively easily interact with them using some Ports.

I just made an Elm app with camera, I render a normal empty video tag in Elm.
Then I inject the camera into that element in javascript.
Messages like start/screenshot ++ is handled via ports.

You can also create a custom ā€œelm-videoā€ element and listen to events directly in elm on that node. Without ports.

Elm code:

Html.video
  [ Html.Attributes.id "videoTag" ]  [ ]

Javascript

// CAMERA
  video = document.getElementById("videoTag");
  if (navigator.mediaDevices.getUserMedia) {
    navigator.mediaDevices
      .getUserMedia({
        video: {
          facingMode: "environment"
        }
      })
      .then(function(stream) {
        video.srcObject = stream;
        video.play();
      })
      .catch(function(error) {
        console.log("Could not open camera",error);
      });
  }
1 Like

Iā€™ve been using a custom element for media capture and it works well. If I can figure out how to represent the constraints well Iā€™ll publish soon.

A few of us were just talking about WebRTC over drinks but Iā€™m fairly certain it hasnā€™t yet been attempted.

4 Likes

I have been using WebRTC for data transfer in my soon-to-be SaaS (with ports), but it didnā€™t end up very reliable (probably due to the hand-written Node signaling server though).

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.