Skip to content

Sanic stops working after trying to open a WS connection #2904

@cnicodeme

Description

@cnicodeme

Is there an existing issue for this?

  • I have searched the existing issues

Describe the bug

I recently updated my machine to the latest OS (Fedora 39). The codebase was working well before, so I suspect this might be related to the Python version:

Python: 3.12.1

Code snippet

from sanic import Request, Websocket, Sanic
from sanic.response import text

app = Sanic("MyHelloWorldApp")


@app.websocket("/stream")
async def feed(request: Request, ws: Websocket):
    data = "hello!"
    print("Sending: " + data)
    await ws.send(data)
    data = await ws.recv()
    print("Received: " + data)


@app.get('/')
async def hello(request):
    return text("Hello, world.")

if __name__ == "__main__":
    app.run(port=5000, debug=True)

Connecting with Firefox and with the following basic code:

let ws = new WebSocket("ws://127.0.0.1:5000/stream");
ws.onerror = (e) => {
  console.log(e);
}
ws.onopen = () => {
  console.log("connected");
  ws.send("hello");
}

Expected Behavior

Steps to reproduce the issue:

  1. Go to http://127.0.0.1:5000/
  2. See the "Hello world message"
  3. Open the console and paste the above javascript
  4. An error is shown in the console: "Firefox can't establish a connection with the server at ws://127.0.0.1:5000/stream" (The message might differ as I have it in French and translated it)
  5. Refresh the page : The page hangs, Sanic doesn't answer any requests anymore

How do you run Sanic?

As a script (app.run or Sanic.serve)

Operating System

Linux

Sanic Version

Sanic 23.6.0; Routing 23.12.0

Additional context

From the MOTD:

  • mode: debug, single worker
  • server: sanic, HTTP/1.1
  • platform: Linux-6.6.11-200.fc39.x86_64-x86_64-with-glibc 2.38

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions