Skip to content

Bare minimal websockets based IRC client

License

Notifications You must be signed in to change notification settings

supernets/superchat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 

Repository files navigation

SuperCHAT

Bare minimal websockets based IRC client

Live Demo: https://webchat.supernets.org

Preview

A client-side JavaScript IRC client that connects through WebSocket gateways. No backend, no build process, no dependencies - just open it in a browser. It handles standard IRC protocol features, supports multiple channels, tracks highlights across all your conversations, and works on mobile. The interface uses monospace fonts for proper display of ASCII art and code.

Features

  • Pure client-side (runs entirely in browser)
  • Multi-channel & private message support
  • IRCv3 capabilities (server-time, batch, message-tags, chat history)
  • Highlight tracking with audio & desktop notifications
  • Full mIRC color code support for formatted text
  • Mobile responsive with adjustable font sizes
  • Connect to any WebSocket-enabled IRC network
  • Cookie-based settings persistence
  • Auto-reconnect when disconnected
  • Toggle chan/nick list boxes and adjustable font size on mobile

WebSocket Requirement

Important: This client requires IRC networks with WebSocket gateway support. Standard IRC ports (6667/6697) will not work. You need a WebSocket-enabled port, typically 7000, 8080, or similar.

UnrealIRCd setup for Websockets

Create a listen block for websocket connections over TLS

listen {
    ip *;
    port 7000;
    options {
        tls;
        websocket { type text; }
    };
    tls-options {
        certificate "tls/irc.crt";
        key "tls/irc.key";
		options { no-client-certificate; }
    };
};

Note: The no-client-certificate is required to allow Chrome based browsers to connect. This is not required for Firefox though.

Load required modules

loadmodule "webserver";
loadmodule "websocket";
loadmodule "websocket_common";

SSL/TLS & HTTPS Requirement

Important: Browsers will not allow WSS (secure WebSocket) connections from non-HTTPS pages. If you're hosting this client over HTTP, you'll only be able to connect to WS (insecure) WebSocket servers, which most browsers restrict or block entirely.

To connect to secure WSS servers, either:

  1. Host the client on HTTPS
  2. Use a reverse proxy (nginx, caddy, etc.) to serve the client over HTTPS and proxy WebSocket connections

When using a reverse proxy, ensure it forwards the client's real IP address (use X-Forwarded-For or X-Real-IP headers) so IRC servers don't see all connections coming from your proxy's IP.

Help Build the Network List

We're creating a dropdown list of WebSocket-enabled IRC networks for easy connection. If your network supports WebSockets, open an issue on GitHub with the following details:

  • Network name
  • WebSocket server address & port
  • SSL/TLS support status
  • Suggested default channels (optional)

Your contribution helps make IRC more accessible to browser-based users!

GrapheneOS Note

If using GrapheneOS/Vanadium browser, you must enable JIT permissions for WebSocket connections to work properly.


Mirrors: SuperNETsGitHubGitLabCodeberg