问题标签 [gevent-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.
python - Socketio 客户端切换到使用烧瓶应用程序运行的 xhr-polling
我正在使用 gevent 运行带有烧瓶应用程序的 socketio 服务器。我的命名空间代码在这里:
我在我的应用程序中注意到的是,当我第一次启动 SocketIO 服务器(下面的代码)时,客户端能够通过 Firefox 和 chrome 中的 websocket 进行连接
一段时间后(可能是一个小时左右),当我尝试通过浏览器客户端连接到该命名空间时,它不再与 websocket 通信,而是与 xhr-polling 通信。此外,在第一个响应来自服务器之前大约需要 20 秒。它让最终用户感觉事情变得非常缓慢(但只有在第一次订阅时呈现页面时,xhr 轮询频繁发生并且事件被及时推送到客户端)。
是什么触发了这种延迟,我如何确保客户端使用 websocket 快速连接。
gevent-socketio - gevent-socketio 中的心跳超时
我在我的应用程序中使用 gevent-socketio。我需要获取有关用户断开连接的信息,即使他没有正确完成会话(socket.disconnect()
从 JS 调用)。正如我从docs看到的,SocketIOServer 构造函数具有参数 *heartbeat_interval*,但我在代码中看不到它。据我了解,文档已过时-其版本为 0.3.1,但代码版本为 0.3.5-rc2(并且仅可用)。
如何在 gevent-socketio 中设置心跳超时?
谢谢,鲍里斯。
django - gevent-socketio nginx uwsgi不能在开发服务器上一起工作
我正在运行一个使用 gevent-socketio 的 django 项目。
出于某种原因,在我的开发服务器上,我的所有 websockets 请求都返回一条101 pending
消息,socketio 将在该消息处开始循环遍历所有其他协议,从而导致pending
状态。
我的 uwsgi 日志中的错误是:
在本地,我没有这个问题。我使用启动服务器python run.py
在我的本地环境中运行.py
在发生错误的开发服务器上,我有以下设置:
nginx.conf
uwsgi_dev.ini
wsgi_dev.py
其他信息:
python - Private messages with gevent-socketio
I've been trying to use the python gevent-socketio library to try to send private messages by socket id, but haven't had any luck. I figured out one can send a message to the socket using the namespace via:
and I can get and store a socket id from self.socket.sessId, but I do not know how to send a message to a specific socket id.
flask - 在 Gevent Socket-IO 中使用 Flask 会话
早上好,
我遇到了一些麻烦,我希望有人能在这里帮助我。我想要做的是访问 Gevent Socket-IO 名称空间中的 Flask 会话。
我尝试将烧杯用作中间件客户端,但我仍然无法从 socket-io 名称空间中访问和更新会话信息。
我对这一切都很陌生,所以任何帮助都将不胜感激。
python - 多个服务器之间的 Socket.io 连接分布
我正在开发数据库设计工具(python、gevent-socket.io)。在这些工具中,多个用户可以讨论一个数据库模型,在运行时接收更改。为了支持这个特性,我使用了 socket.io。我想扩展轻松处理 socket.io 连接的服务器数量。最简单的方法是设置 nginx 根据模型 ID 选择服务器。
我想要模块方法,其中模型 ID 除以服务器数量。因此,如果我有 3 个节点,模型 1 将首先处理,2 - 在第二个,3 - 在第三个,4 - 在第一个等等。
我的模型加载请求看起来像 /models/,所以这里没有问题 - 可以解析参数以找到服务器来处理它。但是模型页面加载后,JS尝试建立连接:
它访问默认端点,因此服务器接收以下请求:
为了处理它,我以这种方式创建应用程序:
进而
我想把它改成
能够在 ngnix 中选择正确的服务器。怎么做?
更新
我还想在尝试建立连接时检查用户权限。我想用 socketio(remaining) 方法来做,但是,我需要再次知道他试图访问什么模型。
更新 2
我实现了权限验证器,从 HTTP_REFERER 获取 model_id。似乎,它只是包含模型标识符的请求的一部分(值示例:http ://example.com/models/1/ )。
python-2.7 - 烧瓶 - Gevent 错误
我在尝试启动 Flask-GEvent 应用程序时遇到了以下错误。
我的操作系统 - W7 64 位
非常感谢任何帮助。
apache - gevent-socketio:“无法导入名称核心”
我有一个Django
项目gevent-socketio
在开发模式下使用 manage.py runserver_socketio 命令运行良好。但我现在尝试将它部署在 Web 服务器 ( Apache
) 上,但出现此错误:
我对 httpd.conf 的补充:
mod.wsgi 文件:
版本:
- Django 1.5.2
- Python 2.7.2(32 位)
- 阿帕奇 2.2.22(32 位)
- mod_wsgi-win32-ap22py27-3.3(从这里下载)
- gevent-socketio 0.13.8
- gevent(从这里下载)
阿帕奇错误日志:
Apache
访问日志:
编辑:
似乎开发人员gevent
在此文件中为库中的问题引入了一个 hacky 解决方案:
https ://bitbucket.org/denis/gevent/src/5a431f359ca55bb610655b64c7495771671d89ba/setup.py?at=default
重要的几行在这里:
也许问题是没有以某种方式遵循符号链接。但是我检查了我添加了“Options FollowSymLinks”的所有地方,问题仍然存在。
python - 循环似乎打破了命名空间方法中的“发出”事件 [gevent-socketio]
几天以来,我一直在尝试在服务器端设置某种循环以允许我定期更新客户端,但似乎没有成功,但是如果您将循环放入服务器事件方法中,它似乎会停止向客户端自动。我的直觉是“gevent”(或greenlets)不允许这种行为(只有客户端,使用socket.io的浏览器,可以定期向服务器发出,而不是相反)。我错了吗?你将如何解决这个问题?如果您执行循环,是否有可能与客户端(套接字)的连接以某种方式丢失?我将附上一个带有架构的小草稿。
谢谢!