Skip to content

Invalid Frame Header with Skipper reverse proxy and async_mode=aiohttp #300

@nebularazer

Description

@nebularazer

When using the aiohttp example from the examples folder and use Skipper as reverse proxy Chrome logs WebSocket connection to 'ws://localhost:8000/socket.io/?EIO=3&transport=websocket' failed: Invalid frame header' failed: Invalid frame header to the console.

The aiohttp example works with nginx and without any proxy.
The asgi example works with skipper, nginx and without any proxy.
A nodejs test server also works with skipper, nginx and without any proxy.
I am using transports: ['websocket'] to force the client to use websockets only

Versions used:

  • pytohn 3.7.3 (also tested with paython 3.6.8)
  • aiohttp 3.5.4
  • python-engineio 3.5.2
  • python-socketio 4.0.2
  • skipper v0.10.216

How to reproduce:

  • edit app.html to force websockets only. change line 10:
var socket = io.connect('http://' + document.domain + ':' + location.port + namespace, {
    transports: ['websocket']
});
  • run skipper with docker:
docker run --rm -it --network host registry.opensource.zalan.do/pathfinder/skipper:v0.10.216 skipper -experimental-upgrade -experimental-upgrade-audit -application-log-level DEBUG -address :8000 -inline-routes 'r: * -> "http://127.0.0.1:8080/"'
  • run python app.py
  • check console output from skipper (has websocket audit enabled) and chrome console for "invalid frame header" -> ws connection is dropped immediately after it has been established.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions