[Webkit-unassigned] [Bug 170463] New: Regression: Safari 10.1 WebSocket errors with "Failed to send WebSocket frame." if too much data is sent
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Tue Apr 4 12:14:45 PDT 2017
https://bugs.webkit.org/show_bug.cgi?id=170463
Bug ID: 170463
Summary: Regression: Safari 10.1 WebSocket errors with "Failed
to send WebSocket frame." if too much data is sent
Product: WebKit
Version: Safari 10
Hardware: Macintosh
OS: macOS 10.12
Status: NEW
Severity: Normal
Priority: P2
Component: WebCore JavaScript
Assignee: webkit-unassigned at lists.webkit.org
Reporter: nathan.friedly+webkit at gmail.com
I have some code that streams audio data over a WebSocket connection. In Safari 10.03 (and it other current and recent browsers), it works as expected. In Safari 10.1, it errors with "WebSocket connection to wss://[...] failed: Failed to send WebSocket frame." and closes the connection with status 1006 (CLOSE_ABNORMAL) after "too much" data is sent. (I haven't worked out the exact amount, but artificially slowing down my source seems to make it work sometimes. My code checks the bufferedAmount property and slows it self down if it gets too high, but this appears to always be 0 in Safari until after the error.)
This is some example code that reproduces the issue:
// this fails in Safari 10.1 but works in 10.03 (and other browsers)
var ws = new WebSocket('wss://echo.websocket.org');
ws.onerror = function(evt) {
// Not sure why, but error events don't seem to include the actual error
// The console, however, will have the following error:
// WebSocket connection to 'wss://echo.websocket.org/' failed: Failed to send WebSocket frame.
console.log("WebSocket error - see console for message");
}
ws.onclose = function(evt) {
console.log(`WebSocket closed with code: ${evt.code}, reason: ${evt.reason}`);
}
ws.onopen = function() {
console.log('sending first binary message');
ws.send(new Uint8Array(23085)); // works
console.log('bufferedAmount is ' + ws.bufferedAmount); // 0
// this gets the error
console.log('sending second binary message');
ws.send(new Uint8Array(23085)); // triggers error and close
console.log('bufferedAmount is ' + ws.bufferedAmount); // 0
console.log('sending third binary message');
ws.send(new Uint8Array(23085));
console.log('bufferedAmount is ' + ws.bufferedAmount);
ws.close();
}
https://jsfiddle.net/yta2mjuf/
My actual code is at https://github.com/watson-developer-cloud/speech-javascript-sdk/blob/v0.32.3/speech-to-text/recognize-stream.js, and you can see a live example of it at https://watson-speech.mybluemix.net/file-url.html
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-unassigned/attachments/20170404/3160f14a/attachment-0001.html>
More information about the webkit-unassigned
mailing list