2015-04-25 2 views
2

Я использую простой Python-приложение веб-сокетов:WebSocket вещания для всех клиентов, использующих Python

from SimpleWebSocketServer import WebSocket, SimpleWebSocketServer 

class SimpleEcho(WebSocket): 

    def handleMessage(self): 

     if self.data is None: 
      self.data = '' 

     # echo message back to client 
     self.sendMessage(str(self.data)) 

    def handleConnected(self): 
     print self.address, 'connected' 

    def handleClose(self): 
     print self.address, 'closed' 

server = SimpleWebSocketServer('', 8000, SimpleEcho) 
server.serveforever() 

Это перекликается сообщения, отправленные каждым клиентом того же индивидуального клиента, но II пытаюсь отправить любое сообщение, полученное сервером ws для всех подключенных к нему клиентов. Может кто-то мне помочь, пожалуйста?

+0

Вы хотите общаться с WebSocket. Это helloworld в мире websocket, и его легко найти с помощью google. – michaldo

ответ

1

Или вы могли бы сделать это:

class SimpleEcho(WebSocket): 

    def handleMessage(self): 
     if self.data is None: 
      self.data = '' 

     for client in self.server.connections.itervalues(): 
      client.sendMessage(str(self.address[0]) + ' - ' + str(self.data)) 

     #echo message back to client 
     #self.sendMessage(str(self.data)) 

    def handleConnected(self): 
     print self.address, 'connected' 

    def handleClose(self): 
     print self.address, 'closed' 
+0

На самом деле я сделал это, и это оказалось лучшим решением, чем предыдущее. Этот аварийный сигнал из-за управления массивом – xProgramery

1

Я думаю, что вы хотите создать список клиентов, а затем прогамально отправить сообщение каждому из них.

Таким образом, когда новый клиент подключается, добавьте их в массив:

wss = [] # Should be globally scoped 

def handleConnected(self): 
    print self.address, 'connected' 
    if self not in wss: 
     wss.append(self) 

Затем, когда вы получите новый запрос, отправьте сообщение по каждому из клиентов сохраняется:

def handleMessage(self): 
    if self.data is None: 
     self.data = '' 

    for ws in wss: 
     ws.sendMessage(str(self.data)) 

Надеюсь, это поможет!

+1

Удивительный Джеймс! Это работает именно так, как я этого хочу. Ты лучший! – xProgramery

Смежные вопросы