2013-05-30 3 views
0

Я пытаюсь использовать библиотеку python gevent-socketio, чтобы попытаться отправить личные сообщения по идентификатору сокета, но не повезло. Я понял, можно отправить сообщение в сокет с использованием пространства имен с помощью:Личные сообщения с gevent-socketio

pkt = dict(type="event", 
name="getBuddies", 
args=' '.join(buddies), 
endpoint=self.ns_name) 
self.socket.send_packet(pkt) 

и я могу получить и сохранить сокет идентификатор из self.socket.sessId, но я не знаю, как отправить сообщение конкретный идентификатор сокета.

ответ

1

После того, как у вас есть идентификатор сеанса вы можете создать новый метод в пользовательском классе mxin, который должен выглядеть примерно так:

class CustomBroadcastMixin(object): 
    ... 
    def broadcast_to_socket(self, session_id, event, *args): 
     """ 
     Broadcast to one socket only. 
     Aims to be used for wishper messages. 
     """ 
     returnValue = False 
     pkt = dict(type="event", 
        name=event, 
        args=args, 
        endpoint=self.ns_name) 

     try: 
      for sessid, socket in self.socket.server.sockets.iteritems(): 
       if unicode(session_id) == unicode(sessid): 
        socket.send_packet(pkt) 
        returnValue = True 
        break 
     except: 
      app.logger.exception('') 

     return returnValue 

, чем назвать его всякий раз, когда вам это нужно.

Cheers

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