2015-05-11 91 views
0

我有簡單的服務器:如何將數據發送給所有客戶端?

# -*- coding: utf-8 -*- 

import os 
import logging 
import tornado.httpserver 
import tornado.ioloop 
import tornado.options 


class WSHandler(tornado.websocket.WebSocketHandler): 

    def check_origin(self, origin): 
     return True 

    def open(self): 
     print 'connection opened' 

    def on_message(self, message): 
     self.write_message("Echo: " + message) 
     print 'received:', message 

    def on_close(self): 
     print 'connection closed' 


class MainHandler(tornado.web.RequestHandler): 

    def get(self): 
     self.write('OK') 


url_patterns = [ 
    (r'/ws', WSHandler), 
    (r'/update', MainHandler), 
] 

application = tornado.web.Application(
    url_patterns, 
    debug=False 
) 

if __name__ == "__main__": 
    application.listen(9991) 
    tornado.ioloop.IOLoop.instance().start() 

而且我想通過WebSocket的發送一些數據給所有連接的客戶端時,我稱之爲「/更新」從我的瀏覽器。怎麼做?

回答

2
clients = [] 

class WSHandler(tornado.websocket.WebSocketHandler): 
    def open(self): 
     clients.append(self) 
     print 'connection opened' 

    def on_close(self): 
     clients.remove(self) 
     print 'connection closed' 


class MainHandler(tornado.web.RequestHandler): 

    def get(self): 
     for client in clients: 
      client.write_message('OK') 
     self.write('OK') 
相關問題