- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 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/
如何在不丢失配置的情况下升级 WAMP 服务器?我当前的版本是 WAMP 3.0.8,我想将其升级到 WAMP 3.1.0。 来自 WAMP 3.0.8 Apache 2.4.23 MySQL 5.7
我已经尝试通过路由器进行端口转发,并且还禁用了我的防火墙。 我还编辑了 httpd.conf。在那里我改变了 Listen 80 到 Listen 8080 我还从 localhost:80 更改了
无论如何,我可以在 Windows 7 计算机上的 USB 上使用 PHP、mySQL、apache、phpmyadmin 吗?询问的原因是我没有足够的权限在计算机上安装 XAMPP 之类的软件包,我
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
我在 Web 浏览器中使用 autobahn-js (0.11.2),在后端使用 crossbar 消息路由器 (v17.2.1)。 在网络断开的情况下(例如由于网络不佳),autobahn-js 客
我正在使用 Wamp 2.2,编辑 conf/extra/httpd-vhosts.conf 编辑此文件以添加 VirtualHosts ,但是当我在 httpd.conf 中取消注释行时 code>
作为我用来验证为站点完成的编程的一些自动部署 + 测试脚本的一部分,我有一些更新 Apache 配置文件的脚本。我想以编程方式重新启动 WAMP,以使更改生效。有没有好的方法可以做到这一点? 脚本是p
您好 Java 代理开发框架开发人员!我想将 WAMP 与 JADE 一起使用,我可以这样做吗,很简单,因为我非常反对 WAMP。还是 JADE 只推荐与 Java 相关的技术进行接口(interfa
我安装了wamp2.4。我卸载了然后安装wamp2.5。现在我在 "C:\wamp\bin\mysql" 中有 2 个文件夹 mysql5.6.12 mysql5.6.17 我将所有数据库文件夹从my
我有一个运行项目的本地 WAMP 服务器 (c:\wamp\www\myProject)。我想使用 PhpStorm 编辑和调试这个项目。我想我必须在 PhpStorm 中创建一个项目并将我的源代码导
我在Windows 8上安装了wamp,我关闭了Skype端口80,我使用了桌面版本的Skype。现在我看不到我的本地主机或 phpmyadmin。哎呀! Google Chrome 无法连接到本地主
我无法删除 C 盘中的 WAMP/bin/mysql 文件夹,每当我按下删除键时,都会出现一个对话框:该操作无法完成,因为该文件已在另一个程序中打开。关闭文件并重试。注意:我已经卸载了 wamp 服务
我想跟踪执行查询所需的时间我提到了 this post但我没有时间只得到查询。在使用我的 Web 应用程序一段时间后,使用 select、update 和 insert 查询(不是来自控制台,而是真正
很长一段时间以来,我一直在使用 php 5.3.5 安装 wamp现在我正在使用 Symfony2.1,需要国际扩展所以我下载并安装了 php 5.4.6,第一次一切正常 但现在我在一个新项目上,我需
我有一个快速的问题。我是第一次尝试使用 Laravel。为此,我正在使用 Wamp。我不知道这是否重要,但我在这个地址设置了 wamp 的 DocumentRoot : DocumentRoot "C
我刚刚下载并安装了 WAMP,当我打开它时,我收到一个警告框 Aestan Tray Menu has stopped working -"A problem has caused program t
我正在尝试从我的本地网站建立 wamp 连接。我在服务器端使用 Ratchet/Wamp,在客户端使用 autobahn|js。该服务运行良好,我能够连接,正在服务器上触发 onOpen/onClos
我已经在我的 Windows 7 机器上下载并安装了 WAMP 服务器版本 2.1d。当我从开始菜单中选择“启动 WAMP 服务器”时,托盘图标出现,但没有任何功能。当我悬停时,工具提示告诉我 2 个
我以前从未遇到过 Wamp 的问题,找不到问题所在。我的 www 文件夹中有几个项目(运行 Windows 7)。 我的主机文件有一行 127.0.0.1 localhost未注释 当我去http:/
我已经在我的 Windows 8 上安装了 WAMP,现在出于某些原因我需要知道它是 32 位还是 64。浏览并查看“关于”和版本/许可证文件,但找不到任何地方。顺便说一下,它是 WAMPServer
我是一名优秀的程序员,十分优秀!