带有gevent-socketio的私信

时间:2013-05-30 01:39:54

标签: python gevent-socketio

我一直在尝试使用python gevent-socketio库来尝试按套接字ID发送私人消息,但没有任何运气。我想通过以下方法可以使用命名空间向套接字发送消息:

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

我可以从self.socket.sessId获取并存储套接字ID,但我不知道如何将消息发送到特定的套接字ID。

1 个答案:

答案 0 :(得分:1)

获得会话ID后,您可以在自定义mixin类中创建新方法,该方法应如下所示:

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

比你需要的时候打电话。

干杯