Skip to content

bufferedAmount property is broken #492

@feross

Description

@feross

The bufferedAmount property doesn't work correctly.

This code:

var WebSocket = require('ws')

var socket = new WebSocket('wss://echo.websocket.org')

socket.onopen = function () {
  socket.send('abc')
  console.log('bufferedAmount after send: ' + socket.bufferedAmount)
}

socket.onmessage = function () {
  console.log('bufferedAmount after onmessage: ' + socket.bufferedAmount)
}

setInterval(function () {
  console.log('bufferedAmount on interval: ' + socket.bufferedAmount)
}, 1000)

Prints:

bufferedAmount after send: 10
bufferedAmount after onmessage: 1
bufferedAmount on interval: 1
bufferedAmount on interval: 1
bufferedAmount on interval: 1
bufferedAmount on interval: 1
bufferedAmount on interval: 1
bufferedAmount on interval: 1
bufferedAmount on interval: 1
...

In Chrome and Firefox, on the other hand, this is what gets output:

bufferedAmount after send: 3
bufferedAmount after onmessage: 0
bufferedAmount on interval: 0
bufferedAmount on interval: 0
bufferedAmount on interval: 0
bufferedAmount on interval: 0
bufferedAmount on interval: 0
bufferedAmount on interval: 0
...

Without a functioning bufferedAmount property, it's not possible to use the code I've written to implement backpressure in the browser on the server as well.

cc @mafintosh @maxogden

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions