[Webkit-unassigned] [Bug 173052] RTCDataChannel connectivity issues in Safari 11

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Jun 8 09:37:09 PDT 2017


--- Comment #2 from Ashley Gullen <ashley at scirra.com> ---
Hi youenn,

I must emphasise case #3 was not a local case so I do not expect your suggestion to change it. However I have checked "Disable ICE candidate filtering" and restarted Safari and tested each case again. Results are:

1) Two Safari windows on the same machine: a connection is established, but send() calls fail with "InvalidStateError (DOM Exception 11): The object is in an invalid state."
2) Safari & Chrome on LAN: it works for a couple of seconds (players can see each other moving), then after a few seconds send() fails with "InvalidStateError (DOM Exception 11): The object is in an invalid state."
3) Safari & Chrome over Internet: identical to previous result (as expected, since not a local connection)

So there appear to be two issues here:
A) Local connections are blocked by default (apparently intentionally)
B) InvalidStateError occurs very soon after establishing a DataChannel connection

B definitely needs to be fixed, but I must try to make a case about A. Multiplayer games are a good use case for DataChannels, and players will frequently want to play over a LAN. Many games have no use for camera or microphone. It also encourages a weird workaround where games would have to ask for media permissions they don't need just to gain LAN connection permission. Alternatively we can put TURN servers in place, but this makes WebRTC games much more expensive to operate as you then have to run the relay server and pay its bandwidth bills, *and* the network performance will be far worse than the low-latency, high-bandwidth local connection that could otherwise be made. In practice this will result in games that are laggy in Safari and much more responsive in Chrome or Firefox.

There are also non-game use cases for local DataChannels: we have a browser-based game development IDE at https://editor.construct.net. It has a "remote preview" feature that allows you to preview your game on another device. It works by sending the entire game down a DataChannel to another device for testing, e.g. your phone. Many of our users are keen for this to work on iOS. In this case we run a TURN server. If a user has a 100mb game and wants to run it on their iPhone, in this case they'll have to wait for a huge transfer over the Internet (while running up our bandwidth bills) just to transfer it across their desk to their phone. It runs at LAN speed in Chrome, so again this will mean that fast, snappy loads in Chrome for Android are a slow drag on Safari.

I am sure there are several other use cases for DataChannels over LAN.

Besides, what's the concern about leaking a private IP? For a nontrivial percentage of users it can be guessed, e.g. it's probably for a lot of people. I'd be interested to know the rationale behind this. Perhaps there's something else that can be done? Surely online games don't have to suffer this?

You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20170608/d3689013/attachment.html>

More information about the webkit-unassigned mailing list