def on_received(self, message): if not message: return #print("client received:", message[:20]) self.cnt += 1 if self.cnt < 1000: self.client.write_message(msg) else: print(self.cnt, time.time() - self.started_at) self.client.protocol.close() global patched if not patched: patched += 1 wsaccel.patch_tornado() TornadoClient(self.url)
import tornado.ioloop import tornado.web import tornado.websocket from tornado.options import define, options, parse_command_line import wsaccel wsaccel.patch_tornado() import time define("port", default = 8080, help = "run on the given port", type = int) class SendWebSocket(tornado.websocket.WebSocketHandler): #on_message -> receive data #write_message -> send data def open(self): print "WebSocket opend" self.write_message("1234") def on_message(self, message): self.write_message(message) def on_close(self): print "WebSocket closed" app = tornado.web.Application([ (r"/echo", SendWebSocket), ]) if __name__ == "__main__": parse_command_line() app.listen(options.port)
v.write_message(message=message) def on_close(self): key = id(self) with self.locker: del self.client[key] logger.debug('%d was gone' % key) def check_origin(self, origin): # これがないと403(謎) return True if __name__ == '__main__': port = 8080 host = '0.0.0.0' uri = '/ws' wsaccel.patch_tornado() # See https://methane.hatenablog.jp/entry/2013/02/20/wsaccel_%E3%82%92_Tornado_%E3%81%AB%E5%AF%BE%E5%BF%9C%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F app = web.Application([ (uri, WebsocketServer) # service only websocket ]) logger.debug('Start service at %s:%d %s' % (host, port, uri)) try: app.listen(port=port, address=host) ioloop.IOLoop.current().start() except (OSError, KeyboardInterrupt) as e: logger.debug(e)