Sono in procinto di sperimentare un po 'con le librerie contorte per server/client IRC. Ho trovato alcuni buoni esempi di come implementare un client IRC ma sembra trovare qualcosa di buono sul lato server delle cose. Qualcuno potrebbe fornire alcune informazioni su come creare un server IRC di base in twisted?Buon esempio di server IRC contorto?
Modifica: Che ne dici di costruire fuori da questo? Sto andando nella giusta direzione qui?
from twisted.internet.protocol import ServerFactory
from twisted.internet import reactor
from twisted.words.protocols.irc import IRC
class IRCServer(IRC):
def connectionMade(self):
print "client connected"
def handleCommand(self, command, prefix, params):
print "handle comm"
IRC.handleCommand(self, command, prefix, params)
def dataReceived(self, data):
print "data: %s" % data
IRC.dataReceived(self, data)
def irc_unknown(self, prefix, command, params):
print "%s, %s, %s, IRC UNKNOWN" % (prefix, command, params)
def irc_USER(self, prefix, params):
print "USER: %s, %s" % (prefix, params)
def irc_NICK(self, prefix, params):
print "NICK: %s, %s" % (prefix, params)
class IRCServerFactory(ServerFactory):
protocol = IRCServer
factory = IRCServerFactory()
reactor.listenTCP(8002, factory)
reactor.run()
Quando provo ad entrare nel canale non riesco mai a farlo. Stavo ricevendo un errore relativo a non avere un gestore per un comando, quindi ho scritto i metodi irc_USER e irc_NICK ma questo si è semplicemente sbarazzato dell'errore, non ha risolto il problema di non connettersi/non funzionare.
Quindi stai dicendo che sto andando nella giusta direzione, ma dovrò continuare ad aggiungere funzionalità/metodi per supportare il protocollo completo? O sarebbe meglio iniziare da zero e non usare words.protocols.irc.IRC e utilizzare solo words.Service? Sono un po 'confuso sul motivo per cui vi è twisted.service e poi twisted.irc allora? Da quale è il corretto da cui lavorare? – themaestro
L'intento di twisted.words.service è che è possibile basare su di esso un server IRC. Potrebbe esserci uno scarto tra l'intento e la realtà; questa è una parte di Twisted che non è estremamente utilizzata. Ciò non significa che twisted.words.service non funzionerà per te, dal momento che ciò dipende esattamente da quali sono i tuoi obiettivi. Per quanto riguarda il motivo per cui vi sono sia twisted.words.protocols.irc.IRC che twisted.words.service, è facile: il primo viene utilizzato come base per l'implementazione di quest'ultimo. –