Scrivo codice Python per client IRC.Client IRC in python
Voglio capire in che modo client e server IRC comunicano tra loro.
Qualcuno può darmi un buon tutorial o architettura di comunicazione IRC per capirlo in profondità?
Grazie
Scrivo codice Python per client IRC.Client IRC in python
Voglio capire in che modo client e server IRC comunicano tra loro.
Qualcuno può darmi un buon tutorial o architettura di comunicazione IRC per capirlo in profondità?
Grazie
Se si desidera reinventare la ruota, è necessario implementare la RFC e fare tutto da zero.
Se non si desidera farlo e richiederebbe un certo livello di astrazione per facilitare lo sviluppo (e quale si dovrebbe), vedere Twisted.
C'è anche una libreria Python IRC client.
Per la maggior parte dei protocolli un buon modo per iniziare è quello di cercare un documento denominato RFC. Ce n'è uno per molti protocolli e definisce - in profondità - come dovrebbe comportarsi.
È possibile trovare quello per IRC here.
La documentazione IRC RFC è un riferimento importante, ma la prima introduzione più utile che ho trovato sulla comunicazione tra client e server IRC è stata davvero semplice.
Innanzitutto, è necessario accedere a una shell * nix (ad esempio, ssh nel proprio host Web che esegue Linux).
Nella riga di comando, aprire una connessione diretta a un server IRC utilizzando il programma 'nc'. Quindi puoi digitare direttamente i comandi RFC e vedere la risposta. Provate a digitare
$ nc wright.freenode.net 6667
PASS whateveryoulike
NICK yournick
USER username 0 * :Real Name
C'è uscita dal server in mezzo a questo, ma ora che hai eseguito l'accesso e "registrato" l'utente. Nota: il tuo nick non è registrato (ala NickServ), mi riferisco alla registrazione di un utente come descritto nella sezione 3.1 dello RFC 2812 IRC Client Protocol.
Ora è possibile entrare in un canale:
JOIN #yourtestchannel
Vedere chi è nel canale:
WHO #yourtestchannel
inviarti un msg:
PRIVMSG yournick Message Text Here
Chat nel canale (inviare il channel a msg):
PRIVMSG #yourtestchannel Message Text Here
Ciò è particolarmente utile se si è connessi allo stesso server e canale con un nick diverso in un vero client IRC. Puoi chattare con te stesso e inviare un nick all'altro e vedere l'output IRC "raw" che dovrai analizzare per scrivere il tuo client o bot.
Per esempio, qualcuno in chat in un canale sembra qualcosa di simile:
:[email protected]_various_parts PRIVMSG #channel :Hey guys, what's up?
Utilizzando la RFC, si può giocare con qualsiasi funzionalità desiderata, e, soprattutto, capire come avrete bisogno analizzare le cose.
Oh, e non dimenticare di PONG di tanto in tanto, o quando viene richiesto con un PING, per evitare il timeout del ping.
Anche la comunicazione sicura è semplice? –
+1: l'implementazione di IRC con Twisted è facile. –
Ho anche scritto https://irc3.readthedocs.org/ con python3/asyncio – gawel