]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Make websocket work in python3.
authorBen Darnell <ben@bendarnell.com>
Sun, 26 Jun 2011 02:04:27 +0000 (19:04 -0700)
committerBen Darnell <ben@bendarnell.com>
Sun, 26 Jun 2011 02:30:05 +0000 (19:30 -0700)
Closes #288.

tornado/websocket.py
website/sphinx/releases/next.rst

index ca20382826c982ebdb4bc26c79015916c5800bd5..b8a73facf06d9dc67ef9e5f2a1bc85f4568f2074 100644 (file)
@@ -20,6 +20,7 @@ import time
 import tornado.escape
 import tornado.web
 
+from tornado.util import bytes_type, b
 
 class WebSocketHandler(tornado.web.RequestHandler):
     """Subclass this class to create a basic WebSocket handler.
@@ -109,7 +110,7 @@ class WebSocketHandler(tornado.web.RequestHandler):
         self._write_response(challenge_response)
 
     def _write_response(self, challenge):
-        self.stream.write("%s" % challenge)
+        self.stream.write(challenge)
         self.async_callback(self.open)(*self.open_args, **self.open_kwargs)
         self._receive_message()
 
@@ -119,8 +120,8 @@ class WebSocketHandler(tornado.web.RequestHandler):
             message = tornado.escape.json_encode(message)
         if isinstance(message, unicode):
             message = message.encode("utf-8")
-        assert isinstance(message, str)
-        self.stream.write("\x00" + message + "\xff")
+        assert isinstance(message, bytes_type)
+        self.stream.write(b("\x00") + message + b("\xff"))
 
     def open(self, *args, **kwargs):
         """Invoked when a new WebSocket is opened."""
@@ -179,7 +180,7 @@ class WebSocketHandler(tornado.web.RequestHandler):
     def _on_frame_type(self, byte):
         frame_type = ord(byte)
         if frame_type == 0x00:
-            self.stream.read_until("\xff", self._on_end_delimiter)
+            self.stream.read_until(b("\xff"), self._on_end_delimiter)
         elif frame_type == 0xff:
             self.stream.read_bytes(1, self._on_length_indicator)
         else:
@@ -260,7 +261,7 @@ class WebSocketRequest(object):
         number = int(''.join(c for c in key if c.isdigit()))
         spaces = len([c for c in key if c.isspace()])
         try:
-            key_number = number / spaces
+            key_number = number // spaces
         except (ValueError, ZeroDivisionError):
             raise ValueError
         return struct.pack(">I", key_number)
index 13ead3848037c10570aa1dad6557c2ad1b0be64c..787aad3c8f5df1b01386b5ae5a31f8e3bdd43079 100644 (file)
@@ -9,3 +9,5 @@ Bug fixes
 
 * `HTTPServer`: fixed exception at startup when ``socket.AI_ADDRCONFIG`` is
   not available, as on Windows XP
+* `tornado.websocket`: now works on Python 3
+