gpt4 book ai didi

python - Autobahn Wamp Protocol如何获取客户端IP地址?

转载 作者:太空宇宙 更新时间:2023-11-04 06:01:47 26 4
gpt4 key购买 nike

我正在使用 Autobahn Wamp 在 Python 中进行套接字连接。我正在使用 PubSub 机制来建立连接。连接建立成功。

但我找不到一种方法来维护与服务器连接的客户端列表。

任何人都可以建议一种方法,我可以通过这种方法维护已连接客户端的 IP 地址列表,以及可以使用相应地址向特定客户端发送回复的方法?

请尽快回复

提前致谢

最佳答案

这是一个由两部分组成的问题。第一部分是询问如何识别连接的网络套接字的 ip 地址。第二部分是询问如何将消息定向到特定 session 。我将从第二部分开始。在上面的评论中有一个工厂变量。它可以在范围内的任何地方使用,如下所示:

factory.dispatch("http://domain.com/topic", "payload", [ excluded sessions ], [ included sessions])

session ID 类似于 TB15LhO8oS0MLsj6,可用于协议(protocol)中的方法,如 self.session_id 变量中的 onSessionOpen、onClose。我做这样的事情:

ses_var = {} 

将它放在代码的顶部,一个全局变量。然后,在 onSessionOpen() 中:

def onSessionOpen(self):
global ses_var

ses_var[self.session_id] = self
print "connection from ", self.peer.host, self.peer.port

此代码为您提供 session 句柄。您将需要管理此变量,并在 onClose() 方法中从变量中删除 session 。

因此,如果您已经在 ses_var 变量中捕获了所有打开的 session ,那么您可以再次使用调度将消息发布到其中的任何(和所有) session :

    factory.dispatch("http://domain.com/topic", "payload", [],
factory.sessionIdsToProtos(ses_var.keys()))

请注意,session_id 不是预期的参数,您必须将 id 转换为实际的 session 对象。

factory.dispatch 中的两个数组定义了不向谁发送消息,以及向谁发送消息。如果您将 None 作为第二个数组传递,您将向所有客户端发送一条消息,因此该示例的调度可以重写为:

    factory.dispatch("http://domain.com/topic", "payload", [], None)

如果你想将它发送到第一个 session (例如),你可以这样做:

    factory.dispatch("http://domain.com/topic", "payload", [],
factory.sessionIdsToProtos([ses_var[0].session_id]))

关于python - Autobahn Wamp Protocol如何获取客户端IP地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24511210/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com