Skip to content

[Bug]: Event listener won't stay connected after ~2mn of cloud vars inativity #722

Description

@JloAu

scratchattach version

2.2.1

What happened?

this only happens with a custom cloud server using a cloudflare tunnel, it works properly with TwCloud or CustomCloud with 127.0.0.1:8080

  • I start my python script (init_cloud_server + cloud event listener)
  • I load and run the turbowarp project -> the server responds to the requests
  • I stay inactive on the turbowarp web page for ~2 minutes, then the issue happens and the server doesn't respond anymore to my requests
  • I restart the python script, then everything works again (I did not reload the turbowarp tab)

I was wondering if this was fixable or not? Because the turbowarp tab seems to work correctly even after a long inactivity...

Your code.

server = sa.init_cloud_server("0.0.0.0", server_port, length_limit=None, allow_non_numeric=True, whitelisted_projects=None, allow_nonscratch_names=True, blocked_ips=[], sync_players=True, log_var_sets=False)

server.start(thread=True)

cloud = sa.CustomCloud(project_id=project_id, cloud_host="wss://[random name].trycloudflare.com", username = "EvtListener", length_limit = None, allow_non_numeric = True, _session = None, header = None, cookie = None, origin = None, print_connect_messages = False)

cloud_events=cloud.events()
cloud_events.start(thread=True, ignore_exceptions=True)

Traceback

127.0.0.1:48574 handshaked, project: 1332266638 user: EvtListener
127.0.0.1:48574 disconnected
127.0.0.1:48580 connected
Traceback (most recent call last):
  File "/home/jloau/.venv/lib/python3.12/site-packages/scratchattach/cloud/_base.py", line 180, in read
    self.receive_new(not recv_once, timeout = timeout_end - time.time() if has_timeout else None)
  File "/home/jloau/.venv/lib/python3.12/site-packages/scratchattach/cloud/_base.py", line 156, in receive_new
    received = self.source_cloud.websocket.recv().splitlines()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/jloau/.venv/lib/python3.12/site-packages/websocket/_core.py", line 395, in recv
    opcode, data = self.recv_data()
                   ^^^^^^^^^^^^^^^^
  File "/home/jloau/.venv/lib/python3.12/site-packages/websocket/_core.py", line 423, in recv_data
    opcode, frame = self.recv_data_frame(control_frame)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/jloau/.venv/lib/python3.12/site-packages/websocket/_core.py", line 444, in recv_data_frame
    frame = self.recv_frame()
            ^^^^^^^^^^^^^^^^^
  File "/home/jloau/.venv/lib/python3.12/site-packages/websocket/_core.py", line 485, in recv_frame
    return self.frame_buffer.recv_frame()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/jloau/.venv/lib/python3.12/site-packages/websocket/_abnf.py", line 375, in recv_frame
    self.recv_header()
  File "/home/jloau/.venv/lib/python3.12/site-packages/websocket/_abnf.py", line 329, in recv_header
    header = self.recv_strict(2)
             ^^^^^^^^^^^^^^^^^^^
  File "/home/jloau/.venv/lib/python3.12/site-packages/websocket/_abnf.py", line 418, in recv_strict
    bytes_ = self.recv(min(16384, shortage))
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/jloau/.venv/lib/python3.12/site-packages/websocket/_core.py", line 581, in _recv
    return recv(self.sock, bufsize)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/jloau/.venv/lib/python3.12/site-packages/websocket/_socket.py", line 125, in recv
    bytes_ = sock.recv(bufsize)
             ^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/ssl.py", line 1233, in recv
    return self.read(buflen)
           ^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/ssl.py", line 1106, in read
    return self._sslobj.read(len)
           ^^^^^^^^^^^^^^^^^^^^^^
ssl.SSLWantReadError: The operation did not complete (read) (_ssl.c:2559)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Needs triageNeed to apply low priority/high priority etcbugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions