jaraco / jaraco/irc

[AIO] No client side ping-pong

Open
#187 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
421
Forks
90
PR merge metrics
No merged PRs in 30d

Description

IRC servers PING clients if the TCP connection is idle to ensure dead streams are dropped. On the other hand clients need to do the same to detect the same issue if they don't get anything from servers for a good while.

Currently no client side ping is implemented and if the socket stalls it will only be detected by the TCP stack when you try to send something and you immediately get disconnected. This is not ideal when you want to stay connected.

I have a local implementation for the AIO client currently implemented as a Protocol: https://github.com/hifi/heisenbridge/blob/master/heisenbridge/irc.py#L12

Let me know if this can be worked upstream somehow. It has been field tested by now that it seems to do about the right thing.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reviewing the AIO client context described in the issue and the referenced Protocol implementation at heisenbridge/irc.py#L12. Determine where client-side keepalive behavior belongs and how it should detect an idle or stalled socket. Done means the AIO client sends periodic pings and detects an unresponsive server without waiting for an application send.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
networking
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.