I have been running some of my own tests to try and get the softap-setup-js library working in the browser. Apologies for the wall of text, but perhaps some of this info will help:
Iām using @mibradās neat little angularjs/ionic framework wrapper UI āngphotonā and have patched it with @msoltersās updated softap.js that sets withCredentials to false to try and fix XHR issues (see: this commit). I couldnāt work out what version of softap.js was in the ngphoton repo so there may be other changes included as well by updating it. The patched ngphoton app is up on my fork here (i just copied in and re-minified the softap.js file)
The ngphoton app (before I patched it) had worked with firmware v0.4.4 , however we have also had issues with firmware v0.4.6 which prompted me to try updating the softap.js library in ngphoton. I am not sure if the issues are firmware-specific though as I havenāt done enough testing to isolate anything between versions.
What I have found is that on iOS 9.0.2 Safari (testing on an iPad Mini with remote inspect debugging) seems to get stuck sending the /configure POST request that actually sets the wireless network. Iām not 100% sure but I think it may be to do with the underlying request calls implemented by nodejs/browserifyās implementation of nodejs libraries.
Before testing the iPad I was testing on Chrome on an Android tablet (Android version 5.1.1, Chrome version 45.0.2454.94). The whole process actually worked fine with this setup - however when debugging the HTTP requests with the Chrome dev tools, I noticed that I couldnāt see the HTTP POST body of the /configure request in the usual place Iād expect it to be in the āNetworkā tab.
I dug through the Javascript to make sure that the correct data was actually being sent through to the device, and discovered that under the hood it was using a call to āfetch()ā to do the POST, which seems to be an upcoming replacement/improvement on XMLHttpRequest that has limited browser support at the moment (e.g. only in Chrome versions 42 and onwards). I also found that it was using a Blob object as a request payload, which appears to be why I canāt see its internals in the Dev Toolsās Network tab. I couldnāt seem to read any data out of the Blob either, but it must have had the right data in it as it was able to configure the wireless properly.
Doing the same debugging back on iOS Safari, I found that the same /configure request (the one that was stalling) was being made with an XMLHttpRequest instead - however again still with a Blob as the request payload. Thereās obviously some kind of feature detection in place here - perhaps it could be the cause of these browser compatibility issues?
Iāve put what I think is the relevant section of code from the browserified softap library in a BitBucket snippet here for reference: https://bitbucket.org/snippets/nuclearpidgeon/rLkAb (the browserified file is too big for BitBucket to display other than as a raw file). That _onFinish() function is what ultimately triggers a HTTP request for the /configure POST call.
I canāt work out where in the nodejs/browserify stack this code comes from, and Iām not sure if Iāll have the time to debug this further. But hopefully some of this information helps.