root/branches/websocket-4173-2/doc/web/examples/websocket.py

Revision 28336, 1.9 KB (checked in by therve, 6 months ago)

Merge forward, resolve conflict.

Line 
1# Copyright (c) 2009 Twisted Matrix Laboratories.
2# See LICENSE for details.
3
4"""
5WebSocket example: echo service.
6
7This creates a simple echo WebSocket example, accessible on
8http://localhost:8080/ with a browser supporting WebSocket.
9"""
10
11import sys
12
13from twisted.python import log
14from twisted.internet import reactor
15from twisted.web.websocket import WebSocketHandler, WebSocketSite
16from twisted.web.resource import Resource
17
18
19
20class Echohandler(WebSocketHandler):
21
22    def frameReceived(self, frame):
23        log.msg("Received frame '%s'" % frame)
24        self.transport.write(frame)
25
26
27
28class ExampleResource(Resource):
29
30    def getChildWithDefault(self, path, request):
31        if not path:
32            return self
33        return Resource.getChildWithDefault(self, path, request)
34
35
36    def render_GET(self, request):
37        return """<html>
38<head>
39    <title>WebSocket example: echo service</title>
40</head>
41<body>
42<h1>WebSocket example: echo service</h1>
43<script type="text/javascript">
44    var ws = new WebSocket("ws://127.0.0.1:8080/ws/echo");
45    ws.onmessage = function(evt) {
46        var data = evt.data;
47        var target = document.getElementById("received");
48        target.value = target.value + data;
49    };
50    window.send_data = function() {
51        ws.send(document.getElementById("send_input").value);
52    };
53</script>
54<form>
55    <label for="send_input">Text to send</label>
56    <input type="text" name="send_input" id="send_input"/>
57    <input type="submit" name="send_submit" id="send_submit" value="Send"
58    onclick="send_data(); return false"/>
59    <br />
60    <label for="received">Received text</label>
61    <textarea name="received" id="received"></textarea>
62</form>
63</body>
64</html>"""
65
66
67
68def main():
69    log.startLogging(sys.stdout)
70    root = ExampleResource()
71    site = WebSocketSite(root)
72    site.addHandler("/ws/echo", Echohandler)
73    reactor.listenTCP(8080, site)
74    reactor.run()
75
76
77
78if __name__ == "__main__":
79    main()
Note: See TracBrowser for help on using the browser.