mozilla / node-firefox

node.js modules for interacting with Firefox via the DevTools remote protocol
https://www.npmjs.org/package/firefox
Mozilla Public License 2.0
301 stars 18 forks source link

DevTools via Wi-Fi support #39

Open jryans opened 9 years ago

jryans commented 9 years ago

FxOS recently gained support for DevTools over Wi-Fi.

If node-firefox was able to detect Wi-Fi devices and connect to them, that would be quite cool!

The code to do so in Gecko is a bit complex, though. Ideally, some code could be shared with Gecko to reduce duplication.

Multiple modules would be impacted, such as: find-devices and firefox-client.

sole commented 9 years ago

HA! I just came here to file a bug for this!

For doc purposes: here's @jryans post announcing this: http://convolv.es/blog/2015/03/25/wifi-debug-fxos/

So @jryans I was going to ask you if you could point me to where this is documented/explained in tech terms, past the QR code side etc. I guess there is lots of hand shaking between the two devices etc. It doesn't seem like it can be done automatically i.e. without human interaction, whereas I was expecting more of a Bonjour like approach so we could run "something" that would scan the network and find Firefox OS devices, then we could run "something else" that would try to connect, if successful we can do the QR dance, and then finally end up with a remote host:port and we can connect to it with firefox-client?

jryans commented 9 years ago

In fact, it is an automatic, Boujour-like approach. (What gives the impression that it is manual? I'd like to know, since I'm writing more posts about it! :smile:)

Devices are discovered automatically on the same Wi-Fi network. There is a design doc (also in-tree) which explains the authentication handshake protocol.

So, potentially node-firefox (in some modules somewhere) would want to:

  1. Search for devices using the discovery mechanism
  2. Run the client side of the handshake
  3. Display a QR code for the phone to scan

After the first connection, it can really be automatic if you choose to remember the client.

Anyway, that's a lot of stuff to do... so, perhaps the code sharing is best? Not sure.