-
Notifications
You must be signed in to change notification settings - Fork 195
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Any reason .push() would work on chrome and safari mobile but not FF or regular safari? #242
Comments
Could it be that you are using not that latest version of I believe that I have fixed very similar issue recently. |
just running |
If it helps I am creating the spdy server as follows:
|
What does |
Oh, yeah... it is the latest. Thank you! May I ask you to run your app with |
https://gist.github.com/crvarner/79f8cd957407f354ed82 note: the path is actually called |
Yikes! Should be fixed now, please update! |
No longer at work but I will let you know if this fixes it tomorrow! Thank you for the quick response! |
now running I put together a repo to recreate the problem. |
Using charles request proxy, the only difference in the two requests is the presence on a Here is the logs from a Safari request: https://gist.github.com/crvarner/908e4da3b13449487b47 And the respective Safari error shown in the browser: Safari can't open the page "https://localhost:3000/". The error is: "The operation couldn't be completed. Protocol error" (NSPOSIXErrorDomain:100) |
Also, not exactly sure how you intended error handling to be done. Currently using this form:
While the page fails to load in FF, the errors ( |
Please check out the README of the repo I linked. It has the most comprehensive documentation of the issue. This way you can clone it and log whatever you wish while running the scenarios I specified. |
Looking, thank you for the information! |
@crvarner I can tell for sure that STREAM_REFUSED is ok if the rest of requests a served normally. Browser can cancel any PUSH stream for any reason. I will look into Safari issue carefully now, as it does seem to be some kind of spdy-transport problem |
I knew a browser can cancel a push stream, but still that should not hang the entire page and require the cache to be cleared before the page will load again. After the STREAM_REFUSED error, Firefox is no longer able to load the initial request of a page refresh. Let alone, display the mentioned fallback behavior and serve up assets normally (1 request per asset) |
This is pretty strange, I have just downloaded your code and tried it in Chrome/FF/Safari, and everywhere I got a JS alertbox without any errors on the console... Also I don't see any problems in the gist that you sent to me. What node.js version are you using? |
|
That is really strange... Did you also try |
After updating to |
I will clone repo to a different machine and try when I get home. Thanks again for the help with this. |
Weird appears to be working too, but I see the spinning circle in Firefox. It would really help to get that DEBUG output during one of the problems... |
Okay so I have cloned and tried the code on a new machine with a fresh install of npm/node and got the same results (on firefox only. the new machine is windows so no Safari) The following gist was achieved by starting the server, navigating to https://gist.github.com/crvarner/1c5d7da27523d5b9fc7b Also a note: the fallback behavior I mentioned earlier took place in the initial load. The logs show |
Gosh, I know what's happening! |
Please try updating, just pushed out [email protected] . Hopefully it will help. |
Not sure about stuck loads, though... Will have to take a deeper look, just to be sure. |
|
Gosh, ok. Thank you for giving it a try. |
@crvarner I'm sorry, the code was really broken for some paths. I have partially reverted recent changes until we will be able to resolve them. Please give a try to 2.0.9, hopefully it will help. |
i'm having the same issue when sending push streams on safari desktop. safari complains
server throws a bunch of
i added a temporary hack to get around this: if (req.isSpdy && !req.headers['user-agent'].includes('Safari')) {
// send push headers
} versions:
|
Here is an express middleware function used to test:
The code above successfully pushes the file contents to the browser in Chrome. In Safari mobile, there is an error which is ignored and the file is loaded normally in another request (I can see the GET in the concole).
In both FF and Safari (desktop), the page fails to load completely. There are no errors in the console. The only peculiar thing is console shows the following:
vs. Chrome:
Commenting out the code above, FF/Safari load the page normally (but with a 304):
Also, the code within
if (req.isSpdy)
is being run in all cases.The text was updated successfully, but these errors were encountered: