问题标签 [ws4py]
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.
python - 使用 ws4py 创建自己的应用程序
我使用 ws4py 创建了一个 Web 服务器套接字,它使用了 cherrypy。当我使用ip:port
它连接到服务器时,它可以完美连接并且能够通过多个浏览器聊天。但是,当我尝试连接时ip:port/ws
,它也可以工作。
但是,在我不使用 连接后ws
,我无法握手。我想处理来自客户端浏览器的所有请求,或者它可能来自不同来源的另一个请求,例如通过此 url 使用 c#ip:port/app
并从客户端发送有效负载。
我已经通过这个命令安装了 ws4py sudo pip install ws4py
,我的服务器脚本是:
python - 使用 ws4py 套接字心跳创建 CherryPy
我花了大约 5 个小时寻找如何做到这一点无济于事。
我们在cherrypy之上使用ws4py。目前,当连接物理丢失时(例如您关闭 WiFi),连接不会终止,直到从服务器发送一条消息,此时它会检测到掉线并清理套接字。
这给我们带来了问题,我们需要尽快知道套接字是否消失了。
ws4py 中的文件“websocket.py”有一个名为“Heartbeat”的类,它看起来正是我想要的,我相信如果它有一个“heartbeat_freq”参数传入,则在“WebSocket”内部创建一个实例;
上面是 ws4py ctor,但我找不到调用此代码的位置。我所知道的是它绑定在 CherryPy 回调系统中。这是我发现的;
上面的ctor是从函数中的“cherrypyserver.py”调用的;
这个函数似乎是一个回调,因为它是从函数中的 _cprequest.py 调用的
现在有更多的东西漂浮在周围,但老实说,我有点迷茫,并认为我做错了。
据我所知,我需要设置回调的“heartbeat_freq”参数,但不确定在哪里设置这个参数。下面的代码是我指定回调创建其实例的“WebSocket”处理程序类(websocket2.Handler 继承自“WebSocket”)的地方。
我相信在这个“rootmap”的某个地方我必须指定参数。有人知道怎么做这个吗。
澄清一下,我希望我的服务器为每个对等方创建一个心跳。我相信这是通过传入“heartbeat_freq”值来完成的。
目前我只是在向所有人广播心跳,我个人不喜欢这种声音
websocket - 如何将支持 websocket 的路径添加到正在运行的 CherryPy 应用程序?
我正在尝试使用 ws4py 在 CherryPy 中动态创建/销毁“支持 websocket”的路径。这是一个演示问题的完整程序:
这是我可以构建的最简单的示例:将 Root 类放置为主应用程序,以及 ws4py 配置指令以允许在ws://localhost:9000/other
. 该add()
方法创建一个新应用程序并将其安装在适当的路径上,以模拟“/other”应用程序的设置。
启动服务器后,我可以在 Chrome 的 JavaScript 控制台中执行此操作:
太棒了,它有效!
现在,http://localhost:9000/add/eagle
在我的浏览器中访问后(导致创建新路径),我在控制台中得到以下交换:
嗯...为什么我会得到 301?只是为了显示“/bird/eagle”和我没有使用“add”路径“创建”的其他路径之间的区别:
404 是有道理的;服务器上没有这样的路径。但是为什么我在安装一个专门为此 websocket 创建目的的新应用程序后会得到 301 呢?为什么它的行为与服务器启动时设置的行为不同(在路径“/other”上)?为了实现我所追求的这种行为,我可以做些什么不同的事情?
python-3.x - 在 python 3 上阅读 TextMessage ws4py
我已经使用 ws4py 0.3.2 创建了一个 Web 服务器套接字,它在 python 3.3.2 上使用了 cherrypy 3.2.4。当我尝试像这样打印客户端发送到服务器的消息时
我收到错误消息:
proxy - 使用 Flask 和 WebSocket-for-Python (ws4py) 的 IPython Notebook 的 WebSockets 代理
受ipython-notebook-proxy启发,基于ipydra,并扩展后者以支持更复杂的用户身份验证以及代理,因为在我的用例中,只能公开端口 80。
我正在为工作人员使用烧瓶套接字gunicorn
,但在代理 WebSocket 时遇到了麻烦。IPython 使用三种不同的 WebSockets 连接,/shell
、/stdin
和/iopub
,但我只能获得101 Switching Protocols
前两个的连接。并在创建后立即/stdin
接收Connection Close Frame
。
这是有问题的摘录代码:
我也尝试创建自己的 WebSocket 代理类,但它也不起作用。
常规的请求-响应周期就像一个魅力,所以我删除了那个代码。如果有兴趣,完整的代码托管在hidra中。
我运行服务器
wordnet - 基于 WordNet 相似度的最高分
一些相似度分数介于 0 和 1 之间,例如最短路径和 WuP。因此,汽车和汽车之间的相似度将为 1,但其他度量值(例如 LCh)将为
我想知道这些措施的最高分。3.6889 是否被认为是最大值?这些是否意味着 LCH 分数在 0 到 3.6889 之间。
我添加了以下措施
android - Kivy 在启动时在 Android 中崩溃
当我在我的 Android 手机 (Samsung GSIII) 上启动我的 Kivy 应用程序时,会出现启动画面,然后它会崩溃并返回到我之前的屏幕。在跟踪和错误之后,我确定了我的 ws4py 导入导致错误的事实。
我在要求下将 ws4py 添加到我的 buildozer.spec 文件中requirements = kivy,ws4py
,并且它似乎在运行时正确下载$>buildozer android debug
。查看 ws4py 的源代码并阅读文档,除了标准库中的模块之外没有其他导入,因此它似乎不是依赖问题(但也许是?)。
DDMS 日志在这里:
我检查了一些关于 kivy 和 python-for-android google 小组的问题,这些小组对 _imaging.so 错误有相同的问题。响应似乎是没有引起问题。我删除了我的应用程序中的所有内容,除了画一个圆圈(有效)然后添加 ws4py 导入(这会破坏一切)。
除了将第三方库添加到规范文件之外,我还有什么遗漏的吗?在 Ubuntu 中运行时一切正常。任何帮助将不胜感激,因为我的应用程序依赖于 Web 套接字连接到我的后端。
python-3.x - WSGI下cherrypy下的ws4py:异常AttributeError: 'mod_wsgi.Input' object has no attribute 'rfile'
我正在尝试在 openshift.com 服务器(应该支持它们)上实现 websockets。
openshift.com 为我提供了一个 WSGI,所以我将我cherrypy
的嵌入其中,以便我的wsgi.py
脚本定义一个application
对象。此外,cherrypy
还有一个 websocket 工具,由ws4py
.
这是一个在 OpenShift 中的 WSGI 下工作的最小化 Cherrypy 应用程序,它也应该使用 websockets!
一切都很好,除了当我创建一个 websocket(连接到ws://myserver:8000/ws
)时,这是我得到的堆栈跟踪:
(我从文件名中手动删除了绝对路径) PS:我使用python3.3
, cherrypy==3.5.0
, ws4py==0.3.4
.
我不清楚:
- 如果这是在 WSGI 环境中,cherrypy 和 ws4py 之间缺乏兼容性。
- 如果在 WSGI 环境中是 ws4py 的问题
- 如果是因为 Openshift websockets 的端口与 http 不同
PPS:这是一个完整的 OpenShift 项目,您可以自己运行并尝试:https ://github.com/spocchio/wsgi-cherrypy-ws4py
python - 如何使用 ws4py 访问服务器端的其他 websocket?
ws4py 提供了一个 WebSocket 类型,该类型应该提供独立于底层服务器(gevent 和其他)的 websocket 抽象
我的问题是,在服务器端使用 gevent 时,没有任何东西可以让我访问所有 websockets 的全局容器。这里文档的设计部分说有一个 WebSocketManager 的全局实例来管理单个 Web 套接字。同一页面上的调用图意味着在服务器端有一个管理器实例来管理事物。
我什至不能编写一个简单的聊天服务器,因为我需要访问其他套接字并编写它们,但是我找不到可以让我这样做的抽象。在 gevent 的情况下,我需要访问其他 greenlets 提供的其他 greenlets 或 websocket。
ws4py 附带的聊天示例使用 Cherrypy 特定的功能,这让我觉得我必须实现一个 gevent 特定的方式来做我想做的事情。
那么我在这里缺少一个功能吗?在服务器端使用 gevent 时,当 websocket 收到消息时,如何访问服务器端的所有 websocket?