2013-08-30 4 views
9

मैं एक WebSocket सर्वर के लिए इस सरल कोड के लिए संदेश भेजने:अजगर बवंडर सभी कनेक्शनों

import tornado.httpserver 
import tornado.websocket 
import tornado.ioloop 
import tornado.web 
import time 

class WSHandler(tornado.websocket.WebSocketHandler): 

    def open(self): 
    print 'New connection was opened' 
    self.write_message("Conn!") 

    def on_message(self, message): 
    print 'Got :', message 
    self.write_message("Received: " + message) 


    def on_close(self): 
    print 'Conn closed...' 


application = tornado.web.Application([ 
    (r'/ws', WSHandler), 
]) 

if __name__ == "__main__": 
    http_server = tornado.httpserver.HTTPServer(application) 
    http_server.listen(65) 
    tornado.ioloop.IOLoop.instance().start() 

मैं सभी जुड़े हुए ग्राहकों के लिए एक संदेश भेजने के लिए सक्षम होना चाहते हैं, लेकिन मैं नहीं जानता, और मैं कहीं भी ऐसा प्रतीत नहीं होता है। कृपया थोड़ी मदद करें? धन्यवाद

उत्तर

10

पहले आपको आने वाले कनेक्शन मैन्युअल प्रबंधित करने के लिए शुरू करना चाहिए, यही कारण है कि टर्ननाडो बॉक्स से ऐसा नहीं करता है। के रूप में अनुभवहीन कार्यान्वयन आप इस तरह कर सकता है:

class WSHandler(tornado.websocket.WebSocketHandler): 
    connections = set() 

    def open(self): 
    self.connections.add(self) 
    print 'New connection was opened' 
    self.write_message("Conn!") 

    def on_message(self, message): 
    print 'Got :', message 
    self.write_message("Received: " + message) 


    def on_close(self): 
    self.connections.remove(self) 
    print 'Conn closed...' 

ताकि आप सभी कनेक्शनों को एक ही संदेश की जरूरत है अगर आप ऐसा कर सकते हैं:

[con.write_message('Hi!') for con in connections] 
+0

मत भूलना कि builtins – deathangel908

+3

threadsafe नहीं कर रहे हैं मैं किया गया है इस कोड के साथ त्रुटियों का सामना करना पड़ रहा है। सुधार है: '[con.write_message (' हाय! ') स्वयं में conconconctions के लिए] ' – James

संबंधित मुद्दे