diff --git a/examples/frameworks/twisted/echo_client_app.py b/examples/frameworks/twisted/echo_client_app.py index 693843119..7e4f4d2e6 100644 --- a/examples/frameworks/twisted/echo_client_app.py +++ b/examples/frameworks/twisted/echo_client_app.py @@ -1,9 +1,11 @@ # install_twisted_rector must be called before importing the reactor +from __future__ import unicode_literals + from kivy.support import install_twisted_reactor + install_twisted_reactor() - -# A simple Client that send messages to the echo server +# A Simple Client that send messages to the Echo Server from twisted.internet import reactor, protocol @@ -12,20 +14,23 @@ class EchoClient(protocol.Protocol): self.factory.app.on_connection(self.transport) def dataReceived(self, data): - self.factory.app.print_message(data) + self.factory.app.print_message(data.decode('utf-8')) -class EchoFactory(protocol.ClientFactory): +class EchoClientFactory(protocol.ClientFactory): protocol = EchoClient def __init__(self, app): self.app = app - def clientConnectionLost(self, conn, reason): - self.app.print_message("connection lost") + def startedConnecting(self, connector): + self.app.print_message('Started to connect.') - def clientConnectionFailed(self, conn, reason): - self.app.print_message("connection failed") + def clientConnectionLost(self, connector, reason): + self.app.print_message('Lost connection.') + + def clientConnectionFailed(self, connector, reason): + self.app.print_message('Connection failed.') from kivy.app import App @@ -39,6 +44,8 @@ from kivy.uix.boxlayout import BoxLayout # the server class TwistedClientApp(App): connection = None + textbox = None + label = None def build(self): root = self.setup_gui() @@ -49,26 +56,26 @@ class TwistedClientApp(App): self.textbox = TextInput(size_hint_y=.1, multiline=False) self.textbox.bind(on_text_validate=self.send_message) self.label = Label(text='connecting...\n') - self.layout = BoxLayout(orientation='vertical') - self.layout.add_widget(self.label) - self.layout.add_widget(self.textbox) - return self.layout + layout = BoxLayout(orientation='vertical') + layout.add_widget(self.label) + layout.add_widget(self.textbox) + return layout def connect_to_server(self): - reactor.connectTCP('localhost', 8000, EchoFactory(self)) + reactor.connectTCP('localhost', 8000, EchoClientFactory(self)) def on_connection(self, connection): - self.print_message("connected successfully!") + self.print_message("Connected successfully!") self.connection = connection def send_message(self, *args): msg = self.textbox.text if msg and self.connection: - self.connection.write(str(self.textbox.text)) + self.connection.write(msg.encode('utf-8')) self.textbox.text = "" def print_message(self, msg): - self.label.text += msg + "\n" + self.label.text += "{}\n".format(msg) if __name__ == '__main__': diff --git a/examples/frameworks/twisted/echo_server_app.py b/examples/frameworks/twisted/echo_server_app.py index e08450c8c..ffbfd1594 100644 --- a/examples/frameworks/twisted/echo_server_app.py +++ b/examples/frameworks/twisted/echo_server_app.py @@ -1,21 +1,21 @@ -# install_twisted_rector must be called before importing and using the reactor +# install_twisted_rector must be called before importing and using the reactor from kivy.support import install_twisted_reactor -install_twisted_reactor() +install_twisted_reactor() from twisted.internet import reactor from twisted.internet import protocol -class EchoProtocol(protocol.Protocol): +class EchoServer(protocol.Protocol): def dataReceived(self, data): response = self.factory.app.handle_message(data) if response: self.transport.write(response) -class EchoFactory(protocol.Factory): - protocol = EchoProtocol +class EchoServerFactory(protocol.Factory): + protocol = EchoServer def __init__(self, app): self.app = app @@ -26,20 +26,23 @@ from kivy.uix.label import Label class TwistedServerApp(App): + label = None + def build(self): self.label = Label(text="server started\n") - reactor.listenTCP(8000, EchoFactory(self)) + reactor.listenTCP(8000, EchoServerFactory(self)) return self.label def handle_message(self, msg): - self.label.text = "received: %s\n" % msg + msg = msg.decode('utf-8') + self.label.text = "received: {}\n".format(msg) if msg == "ping": - msg = "pong" + msg = "Pong" if msg == "plop": - msg = "kivy rocks" - self.label.text += "responded: %s\n" % msg - return msg + msg = "Kivy Rocks!!!" + self.label.text += "responded: {}\n".format(msg) + return msg.encode('utf-8') if __name__ == '__main__':