问题标签 [python-socketio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
768 浏览

websocket - Socketio 错误:@sio.event AttributeError:“客户端”对象没有属性“事件”

所以我正在为 ctf 挑战编写 soem 代码,基本上我使用 socketio 与假的内部网络进行通信,但是当我使用 python3 bridge.pylocked_out.logicdata 运行以下代码时,我收到以下错误:Socketio错误:@sio.event AttributeError:“客户端”对象没有属性“事件”。有谁知道这可能是为什么?干杯!

0 投票
2 回答
38 浏览

python - 我将如何“听”/装饰导入类中的设置器

我不确定这是否是一种很好的使用方法,但我对 Python 的经验并不丰富,所以请接受我的道歉。我试图对此进行一些研究,但其他相关问题已经给出了替代的特定问题的解决方案——这些都不适用于我的具体案例。

我有一门课来处理我的特定机器学习模型的训练/查询。None该算法在远程传感器上运行,如果算法未经过训练,则将各种值输入返回的对象中。训练后,它会根据分配给新输入的分类返回True或返回。False有时,该类会更新几个阈值参数,我需要知道何时发生这种情况。

我正在使用套接字将消息从远程传感器传递到我的主服务器。我不想通过填充消息传递代码来使 ML 算法类复杂化,因此我一直在Main导入“算法”类的类中处理这个问题。我希望Main该类能够确定阈值参数何时更新并将其报告回服务器。

我最初的想法是MyAlgorithmClass使用 setter 添加一个属性。然后我可以在我的班级中装饰它,Main以便每次调用 setter 时,我都可以使用该值......例如:

我现在的问题是如何self._algorithm_data.param1用 装饰二传手watch_param1?如果我只是简单地设置self._algorithm_data.param1 = watch_param1,那么我最终将设置self._algorithm_data._param1等于我的功能,这不是我想要做的。

我可以使用 getter/setter 方法而不是属性,但这不是很pythonic,并且由于多人正在修改此代码,我不希望稍后其他人为属性替换/更改这些方法。

这里最好的方法是什么?这是一个小例子,但稍后我会有稍微复杂一点的例子,我不想要会导致算法类过于复杂的东西。显然,另一种选择是观察者模式,但我不确定在某些情况下我只有一个变量要监控的地方有多合适。

我真的很难找到一个好的解决方案,所以任何建议都将不胜感激。

提前致谢,

汤姆

0 投票
1 回答
968 浏览

python-3.x - 未捕获的类型错误:无法读取未定义的属性“sid”

我正在使用andsocket.io的 python-react 应用程序中使用。客户端在连接到服务器时和触发事件之前显示错误。python-socketiosocket.io-clientconnect

服务器:

客户端(反应):

控制台中打印的错误:

这些文件与socket.io-client

0 投票
1 回答
43 浏览

python - 从不同的一个 socketio 命名空间访问方法

我有一个烧瓶应用程序,它使用 flask-socketio 和 python-socketio 来促进云中的 socketio 服务器和通过硬件设备的显示设备之间的通信。

我有一个显示名称空间,它公开面向显示的事件,并且还使用一个单独的客户端类来连接云中的服务器并与之对话。这按设计工作得很好,但现在我想从不同的命名空间触发我的客户端类中的连接方法。到目前为止,我还无法让它发挥作用。

我尝试将显示命名空间类添加到烧瓶上下文中,然后将其传递给 socketio.on_namespace() 方法。然后从另一个命名空间中,我从 current_app 中获取它并尝试触发与云服务器的连接。这将返回“RuntimeError:在应用程序上下文之外工作”错误。

所以在这一点上,我仍在研究如何正确地做到这一点,但我希望有人以前处理过类似的事情,并且知道如何从不同的名称空间访问一个名称空间上的方法。

0 投票
0 回答
100 浏览

python - 我们可以在同一个 Django 服务器上同时运行 Socket Server 和 Socket Client 吗?

我有一个 Django 服务器作为 2 个角色工作:套接字服务器和套接字客户端。

1/ 作为 Socket Server,它在本地工作,因此同一网络中的一些客户端可以连接并接收事件。

2/ 作为 Socket 客户端,它将(使用 Socket)连接到另一个远程服务器以接收事件并将该事件转发给所有本地客户端

但是当 Socket Client 接收事件然后由 Socket Server 发送到本地客户端时,什么都没有发生(本地客户端无法接收该事件)。

看来 Socket Server 和 Client 不能一起工作。这是我的代码的一些示例:

__socketServer__只是一个SocketServer类的实例,如果只是在本地网络中简单的发送/接收消息(不放在套接字客户端事件中),它就可以工作

我对服务器+客户端都使用python-socketio

0 投票
0 回答
282 浏览

sockets - python socket.io 如何发射到特定的客户端?

nodejs 有一个类似的问题,但我也需要 python

node.js socket.io 如何发射到特定的客户端?

我想使用来自连接客户端的 socketio 和烧瓶根据某些条件向特定客户端广播消息。基本上,

  1. 如何在套接字 io 中找到已连接的客户端?
  2. 如何向特定客户端发送消息?

广播示例代码

0 投票
1 回答
872 浏览

javascript - Python-socketio Server.call() 方法似乎不适用于 JavaScript 客户端

总结问题

我正在使用该python-socketio软件包作为我正在创建的基于 Web 的游戏的服务器。我最初在 Python 中实现客户端(带有python-socketio[client])用于调试目的,并在开发时广泛使用该Server.call()方法。这与在 Python 中运行的所有内容完美配合,并且在将客户端函数的返回值发送回服务器之前等待用户输入。

但是,当尝试将事情切换到 JavaScript 时,Server.call()无论我做什么都会超时。我真的不知道我可以切换到任何替代方案,而不必完全破坏我已经实施的程序,但我愿意接受建议。

描述你尝试过的东西

我尝试在 JavaScript 中重新实现我的 Python 客户端代码,或多或少与最初编写的完全一致。这是一个失败,因为正如我在上面提到的任何时候我使用Server.call()它超时(或者如果我设置无限期挂起timeout=None)。

我还尝试过切换Server.call(),而是使用Server.emit()回调来设置全局变量,然后阻塞直到使用 设置Server.sleep(),但这似乎也不起作用。

显示一些代码

这是一个演示该问题的最小示例。服务器在两个用例中是相同的,Python 客户端和 JavaScript 客户端实际上是相同的,但只有在使用 Python 客户端时才有效。

这是服务器,用 Python 编写并使用python-socketio模块:

这是工作的 Python 客户端:

这是不工作的 JavaScript 客户端和一些相应的 HTML,因此任何阅读此内容的人都拥有尝试重现我的问题所需的一切:

如果有人可以帮助我弄清楚为什么这不起作用(或推荐一个简单的替代方案),我将非常感激您!:)

记录服务器的输出

以下是我尝试运行 JavaScript 客户端时的服务器日志:

为了比较,以下是我成功运行 Python 客户端时的服务器日志:

0 投票
1 回答
411 浏览

python - 具有多处理功能的 Python socketio

所以我一直在努力解决这个让我发疯的泡菜错误。我有以下带有以下代码的主引擎类:

我还有另一个名为 multi 的文件,其运行如下:

如您所见,我可以尝试创建两个我想独立运行的 def run 和 fetchFromQueue 进程。

我的 run 函数启动 python-socket 服务器,我从 html 网页发送一些数据到该服务器(无需多处理即可完美运行)。然后我尝试将接收到的数据推送到队列,以便我的其他函数可以检索它并使用接收到的数据。

我需要对从套接字接收到的数据执行一组耗时操作,这就是我将其全部推入队列的原因。

在运行主引擎类时,我收到以下信息:

你能帮我解决我做错了什么吗?

0 投票
2 回答
955 浏览

angular - 跨域请求被阻止:同源策略不允许将 python 中的远程资源读取到角度套接字 io

socketio 无法从 python 获取数据到角度前端它显示错误为“ Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://my ip:3000/socket.io/?EIO=3&transport=polling&t=NQtJeHE. (Reason: CORS request did not succeed)

没有从 python socketio emits 将它变成角度显示上述错误

0 投票
0 回答
75 浏览

python - 两个后端之间的多个 Websocket 连接

我正在尝试使用 websocket 连接两台服务器,但我需要多个 websocket 连接。因此,如果客户端与服务器 A 通信,则需要为此客户端与服务器 B 建立 websocket 连接。如果另一个客户端连接,我需要从服务器 A 到服务器 B 的第二个 websocket 连接。

这样的事情可能吗?我找不到任何关于此的文档。

两台服务器都在 python 中。我正在使用 socketIO 库。

我需要将连接存储在一个列表中,然后如果客户端从服务器 B 请求某些内容,服务器 A 需要查找正确的连接并将请求发送到服务器 B。

这样做的原因是,服务器 B 为每个 WS 连接创建一个实例,并在连接关闭时将其销毁。

有什么建议么?