问题标签 [mongrel2]

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 投票
3 回答
145196 浏览

javascript - 从浏览器发送 websocket ping/pong 帧

我一直在阅读有关 websockets 中的 ping/pong 消息以保持连接活跃,但我不确定它们是什么。它是一种独特的框架类型吗?(我在 chrome 中的 javascript WebSocket 对象上看不到任何与乒乓球相关的方法)。或者它只是一种设计模式(例如,我真的向服务器发送“ping”或任何其他字符串并让它响应)。乒乓球是否与连续帧有关?

我问的原因是我使用的是在 Mongrel2 后面运行的 python 框架,所以我想知道是否有办法向 Mongrel2 发送特定的 ping/pong 消息,告诉它在我的 python 应用程序不需要的情况下保持连接活动担心它。我猜这类似于为它提供一个单独的 HTTP 方法。而且我认为专用的 ping/pong 消息帧可能比字符串“ping”更简单(服务器和网络上的负载更少),尽管这可能无关紧要。

编辑:我刚刚查看了RFC 6455,看起来 Ping 和 Pong 绝对是具有自己操作码的控制帧类型。那么如何在 Chrome 中从 javascript 发送 Ping 帧?

0 投票
1 回答
191 浏览

node.js - Web App 技术选择

我目前正在 ember.js 中编写用户界面,并且在有关传输技术和服务器端脚本的服务器端决策方面需要一些帮助。

应用程序计划通过添加一些用于处理用户权限和存储输入输出的数据库糖来简单地包装对少数服务器端脚本的调用。

用户必须登录才能正确使用应用程序。

我期待工作用户的高并发性,因为我可以在服务器上使用更多的并行线程,所以我不完全确定是否必须使用 Node.js+socket.io。

一半的请求将是对数据库请求的简单请求,另一半将需要另一个服务器端脚本的更多计算时间(最多 5 秒)。

我很可能会使用 MongrelDB 作为数据库。

我最大的问题:

  • 今天技术上使用纯 websockets 是安全的,还是更好地优雅降级 Socket.io?
  • node.js 会在多核机器上很好地扩展,还是我应该使用带有 python 后端的 Mongrel2 之类的东西?
  • 如果某些响应真的很长,python 后端会处理大并发吗?
  • 如何使用 node.js+socket.io 处理登录用户?
0 投票
0 回答
114 浏览

zeromq - Mongrel2 是否可以设置为每次启动时生成一个新的实例 UUID?

根据 Mongrel2 手册中的规则 2(第 5.3.2 节),往来于 Mongrel2 的每条消息都将实例的 UUID 作为第一件事。规则 3(第 5.3.3 节)说它后面跟着一个数字,即来自 Mongrel2 的消息的连接 ID。每次我启动 Mongrel2 时,连接 id 从 0 开始,然后递增。所以我担心在重新启动 Mongrel2 后,对来自前一个实例的请求的回复可能会被接受为对来自当前 Mongrel2 实例的完全不同的请求的回复。因此我的问题是,如果 Mongrel2 每次启动时都可以动态创建一个新的 UUID。或者如果有一个很好的解决方法,除了必须保存状态,即检查重复的 UUID、连接 ID。

谢谢

0 投票
1 回答
207 浏览

c - 任务农场模式和mongrel2

我正在考虑使用 mongrel2 处理 Web 服务请求。对于后端,我想使用任务农场模式,使用 C 绑定到 zeromq。

不过,在阅读了 mongrel2 手册之后,我不清楚如何实现这一点,因为后端处理程序会从 mongrel2 拉取消息并使用 ZMQ_PUB 套接字将消息发送到 mongrel2。

我想将消息从处理程序转发到后端的任务场,并在处理程序中接收响应,然后将其发布到 mongrel2。zeromq 客户端是否可以绑定到多个 (2) 输入和多个 (2) 输出?

FWIW,我在 ANSI C 中实现这个。

0 投票
1 回答
132 浏览

c - 混淆的HTTP解析器?

我正在学习 Go,我认为使用 Ragel 和 Go 实现我自己的 HTTP 1.1 解析器将是一个很好的练习。我认为查看 Mongrel2 的代码库以了解它是如何完成的将是一个好主意。

Mongrel 的 HTTP 解析器的代码在这里,我很难理解突出显示的函数http11_parser.c,它似乎在执行实际的 HTTP 处理。

我的问题如下:

  1. 简单来说,实现背后的基本思想是什么?代码有什么作用?
  2. 假设有像惯用 C 这样的东西,这段代码是一个很好的例子吗?如果不是,那么所有这些 goto、嵌套 if 和 switch 是否有原因?

PS。关于 Q2,我能找到的使用 goto 的唯一解释是这里。请注意,我对 C 的体验是 0.5(范围从 1 到 10),这解释了为什么我难以理解这段代码!

0 投票
2 回答
4049 浏览

regex - Logstash Grok 模式与 Python 正则表达式?

我正在尝试配置 logstash 来管理我的各种日志源,其中之一是 Mongrel2。Mongrel2 使用的格式是tnetstring,其中日志消息将采用以下形式

我想编写自己的 grok 模式来从上述格式中提取某些字段。我首先在上面的消息上测试我的正则表达式正则表达式是

这匹配localhost。当我在表单中使用与 grok 模式相同的正则表达式时

并配置logstash

相同的正则表达式导致匹配86:9:localhost。我不知道我哪里出错了?是我用来测试的正则表达式引擎是基于 Python 的,但 grok 过滤器正则表达式是基于 Onigurama 的吗?

目前在grokdebug中使用以下输入对其进行测试

和以下模式

导致

我想要的地方

0 投票
0 回答
75 浏览

https - 在 Mongrel2 下运行 Kibana 和 Elasticsearch

我有一个运行 Elasticsearch 和 Kibana 的 Vagrant VM。Kibana 目前由 Mongrel2 根据以下配置提供服务

Elasticsearch 在端口 9200 上运行。但是,当我尝试查看 Kibana 时,它无法正确加载,在浏览器中出现以下错误

问题似乎很明显,Mongrel2 正在提供内容,https但 Elasticsearch 被查询http,因此 Kibana(服务于https)无法与其通信。我想保留httpsfor Mongrel2,但我不知道该怎么做才能让 Kibana 正常工作。我应该在 Mongrel2 中使用某种代理吗?有直接的解决方案吗?

0 投票
1 回答
80 浏览

zeromq - Mongrel2 send_spec 和 recv_spec

我刚刚开始使用 Mongrel2,所有的教程都很棒,直到我开始将 Mongrel2 处理程序 send_spec 和 recv_spec 指向 localhost 以外的地址,例如网络上的第二台机器。

我开始收到这些错误:

我的问题是当有两个节点 A 和 B,其中 A 是 Mongrel2 服务器,B 是 A 的处理程序之一的“工作人员”时,A 的 .conf 文件的 send_spec 和 recv_spec 中会包含哪些地址?

如果这是一个幼稚的问题,我很抱歉,它让我很困惑。