问题标签 [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.

0 投票
1 回答
662 浏览

python - Socketio 客户端切换到使用烧瓶应用程序运行的 xhr-polling

我正在使用 gevent 运行带有烧瓶应用程序的 socketio 服务器。我的命名空间代码在这里:

我在我的应用程序中注意到的是,当我第一次启动 SocketIO 服务器(下面的代码)时,客户端能够通过 Firefox 和 chrome 中的 websocket 进行连接

一段时间后(可能是一个小时左右),当我尝试通过浏览器客户端连接到该命名空间时,它不再与 websocket 通信,而是与 xhr-polling 通信。此外,在第一个响应来自服务器之前大约需要 20 秒。它让最终用户感觉事情变得非常缓慢(但只有在第一次订阅时呈现页面时,xhr 轮询频繁发生并且事件被及时推送到客户端)。

是什么触发了这种延迟,我如何确保客户端使用 websocket 快速连接。

0 投票
0 回答
395 浏览

gevent-socketio - gevent-socketio 中的心跳超时

我在我的应用程序中使用 gevent-socketio。我需要获取有关用户断开连接的信息,即使他没有正确完成会话(socket.disconnect()从 JS 调用)。正如我从docs看到的,SocketIOServer 构造函数具有参数 *heartbeat_interval*,但我在代码中看不到它。据我了解,文档已过时-其版本为 0.3.1,但代码版本为 0.3.5-rc2(并且仅可用)。

如何在 gevent-socketio 中设置心跳超时?

谢谢,鲍里斯。

0 投票
3 回答
2735 浏览

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

其他信息:

0 投票
1 回答
547 浏览

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.

0 投票
1 回答
855 浏览

django - 使用Django进行多人游戏,服务器和客户端之间的通信使用什么?

我目前正在用 Django 开发一个多人游戏。您可以将游戏视为聊天室应用程序。每个用户最多可以创建8个玩家的房间,等待其他用户加入,然后开始玩。

为此,我四处搜索并找到了两种可能的解决方案:

  • 一种是使用带有 gevent-socketio 或 tornado 的 Django,这里是github 链接
  • 另一个是使用带有nodejs的Django,这里是tuto的链接

我不知道哪种解决方案更适合我的情况。此外,我想我需要为每个聊天室动态创建 websocket,对吧?

0 投票
1 回答
882 浏览

flask - 在 Gevent Socket-IO 中使用 Flask 会话

早上好,

我遇到了一些麻烦,我希望有人能在这里帮助我。我想要做的是访问 Gevent Socket-IO 名称空间中的 Flask 会话。

我尝试将烧杯用作中间件客户端,但我仍然无法从 socket-io 名称空间中访问和更新会话信息。

我对这一切都很陌生,所以任何帮助都将不胜感激。

0 投票
1 回答
965 浏览

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/ )。

0 投票
1 回答
944 浏览

python-2.7 - 烧瓶 - Gevent 错误

我在尝试启动 Flask-GEvent 应用程序时遇到了以下错误。

我的操作系统 - W7 64 位

非常感谢任何帮助。

0 投票
0 回答
461 浏览

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”的所有地方,问题仍然存在。

0 投票
1 回答
1234 浏览

python - 循环似乎打破了命名空间方法中的“发出”事件 [gevent-socketio]

几天以来,我一直在尝试在服务器端设置某种循环以允许我定期更新客户端,但似乎没有成功,但是如果您将循环放入服务器事件方法中,它似乎会停止向客户端自动。我的直觉是“gevent”(或greenlets)不允许这种行为(只有客户端,使用socket.io的浏览器,可以定期向服务器发出,而不是相反)。我错了吗?你将如何解决这个问题?如果您执行循环,是否有可能与客户端(套接字)的连接以某种方式丢失?我将附上一个带有架构的小草稿。

谢谢!