python - Tornado web socket communication on demand? -


i'm setting tornado web socket , want use send log data on network. seems work fine, but:

(1) can send data client server arbitrarily once connection established, or have establish new connection , use on_open method print/work sent message every time?

(2) in client (link): why isn't ws.close() called? doesn't seem happen. how can terminate connection then?

(3) there better way identify clients other connection.request.remote_ip?

code: server

import tornado.ioloop import tornado.web import tornado.websocket  host = "localhost:2000"  class mainhandler(tornado.web.requesthandler):     def get(self):         self.write("<h3>hello</h3>")  class echowebsocket(tornado.websocket.websockethandler):     connections = set()     ips         = set()      def open(self):         self.connections.add(self)         self.ips.add(self.request.remote_ip)         print("[master]: websocket opened {}".format(self.request.remote_ip))      def on_message(self, message):         print("[client {}]: {}".format(self.request.remote_ip, message))         [con.write_message("[master]: {}".format(message)) con in self.connections]      def on_close(self):         self.connections.remove(self)         self.ips.remove(self.request.remote_ip)         print("[master]: websocket closed - client {}".format(self.request.remote_ip))  def setup():         return tornado.web.application([(r"/", mainhandler),                                         (r"/ws", echowebsocket)])  if __name__ == "__main__":     s = tornado.httpserver.httpserver(setup())     s.listen(2000)     print("------------- info -------------\nstarted server @ {}\nsocket available @ /ws".format(host))     tornado.ioloop.ioloop.current().start() 

client:

from tornado.websocket import websocket_connect import tornado import time  url = "ws://localhost:2000/ws"  class client(object):     def __init__(self, url, log=none):         self.url = url         self.ioloop = tornado.ioloop.ioloop.current()         self.conn = none         self.log = log      def start(self):         websocket_connect(                         self.url,                         self.ioloop,                         callback=self.on_connected,                         on_message_callback=self.on_message)         self.ioloop.start()      def on_connected(self, f):         try:             self.conn = f.result()             self.conn.write_message("client #1 connected")         except exception e:             print("[error]: {}".format(e))             self.conn.write_message("error: {}".format(e))             self.ioloop.stop()      def on_message(self, message):         if message none:             print("[error]: no message received")             self.conn.write_message("[error]: no message received")             self.ioloop.stop()         else:             print(message)      def close():         self.conn.close()  if __name__ == '__main__':     ws = client(url)     ws.start()     ws.close() 


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -