#!/usr/bin/env python # Copyright (c) Twisted Matrix Laboratories. # See LICENSE for details. from __future__ import print_function from twisted.spread import pb from twisted.internet import reactor from twisted.cred import credentials class Client(pb.Referenceable): def remote_print(self, message): print(message) def connect(self): factory = pb.PBClientFactory() reactor.connectTCP("localhost", 8800, factory) def1 = factory.login(credentials.UsernamePassword("alice", "1234"), client=self) def1.addCallback(self.connected) reactor.run() def connected(self, perspective): print("connected, joining group #NeedAFourth") # this perspective is a reference to our User object. Save a reference # to it here, otherwise it will get garbage collected after this call, # and the server will think we logged out. self.perspective = perspective d = perspective.callRemote("joinGroup", "#NeedAFourth") d.addCallback(self.gotGroup) def gotGroup(self, group): print("joined group, now sending a message to all members") # 'group' is a reference to the Group object (through a ViewPoint) d = group.callRemote("send", "You can call me Al.") d.addCallback(self.shutdown) def shutdown(self, result): reactor.stop() Client().connect()