问题标签 [kemal]

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 投票
2 回答
480 浏览

http - 使用 Kemal 设置 HTTP 响应标头

我想在凯末尔实现这个答案

我当前的设置有一个 pdf 文件app/public/map.pdf,在我的主水晶文件中有以下代码:

当我通过在浏览器(firefox)中打开来测试我的代码时localhost:3000/map.pdf,它会提示下载文件(而我希望它尝试显示它)。curl -I结果如下:

我希望看到的地方Content-Type: application/pdf

0 投票
1 回答
163 浏览

crystal-lang - 在 kemal 应用程序中使用 Bootstrap

我正在使用kemal网络框架在水晶语言中创建应用程序。

如何style.css在 kemal 的应用程序模板中使用或引导文件?

  • myapp.cr 位置 = src/myapp.cr
  • 引导程序位于 = src/public/css/bootstrap.css
  • 布局文件 = src/views/layout/standard.ecr

我也尝试了完整路径,但这也不起作用。不会加载任何样式。

这是我的standard.ecr(布局文件)

0 投票
1 回答
626 浏览

json - 在 kemal 的 POST 中获取 JSON

我想要的是 kemal 中的 POST 请求,其中主体有一定数量的我想要访问的键/值,然后是一个任意 JSON 对象,我只想对其进行字符串化并传递,然后再解析回 JSON。

我的问题是我显然无法正确输入类型。想象一个像这样的潜在 JSON 体:

现在我一直在尝试做的是以下几点:

现在显然我在访问“有效负载”时得到的东西是 type Hash(String, JSON::Type),这让我有点困惑。

任何想法我如何能够从请求正文中获取子 JSON,将其转换为 String 并返回 JSON?

0 投票
1 回答
84 浏览

websocket - 使用 Kemal 通过 websocket 将数据发送给体面的用户

如何将数据数据发送给通过 websockets 连接的体面用户?我知道,Websocket 连接会产生上下文,但是我如何过滤一个像样的套接字连接,以便根据上下文(env)仅向 1 个(或一些)连接的用户发送数据?

套接字必须包含房间还是需要 SOCKETS 才能成为哈希?

0 投票
2 回答
242 浏览

udp - 使用 Crystal/Kemal 监听 UDP 数据包

我一直在尝试使用 Crystal 和 Kemal 创建一个非阻塞服务器,它将 (a) 侦听发送给它的 UDP 消息流,然后 (b) 将该消息转发到 WebSocket 到任何已经启动的浏览器ws 连接。

到目前为止,我能做到的最好的是:

这一切似乎有点不雅,而且确实没有按预期工作,因为:

  • 在正在启动的 Crystal 服务器和连接到 Crystal 服务器的第一个 Web 浏览器之间发送的所有 UDP 数据包都被缓存并在一个巨大的积压中发送
  • 与 WebSockets 断开连接的浏览器没有得到正确处理,即 socket.on_close 没有被触发,并且循环继续直到我终止 Crystal 服务器

我希望有一个 server.on_message 类型的处理,它可以让我只在收到 UDP 数据包时运行代码,而不是持续轮询阻塞服务器。有没有另一种方法可以使用 Crystal/Kemal 实现这一目标?

谢谢!

0 投票
1 回答
408 浏览

crystal-lang - 运行时未定义的引用,SSL

在 VM 中试用 Kemal,使用 gc、openssl、crystal 和 shard 包全新安装 Arch-Linux。通过简单的网络应用程序的 Kemal 指南中的步骤,但出现错误crystal run src/test_app.cr

_main.o:在函数“__crystal_main”中:
/usr/lib/crystal/openssl/lib_ssl.cr:213:未定义对“SSL_Library_init”的引用

...随后是许多类似的错误消息、未定义的引用等。

我是否缺少依赖项?

0 投票
1 回答
125 浏览

http - Kemal 使用处理程序中间件缓存响应

Kemal 使用处理程序中间件缓存响应

我正在尝试使用 Kemal 缓存一些 GET 请求。

但是在第一个请求中,浏览器总是在等待响应。并在第二个请求中发送“已关闭流(IO::Error)”错误。

0 投票
1 回答
125 浏览

sinatra - 如何用kemal和水晶处理html表单数据

我想以 html 表单获取用户输入并使用数据填充数据库表。Sinatra 以哈希 params 的形式返回表单数据。我可以用 Kemal 和 Crystal 做到这一点吗?

请注意,我正在学习水晶,所以这可能还不可能。

提前感谢所有答案。与此同时,我还在挖掘:)

0 投票
1 回答
129 浏览

parameters - 在 kemal 中使用视图中的参数

我有一个简单的 ruby​​/sinatra 应用程序,我正在尝试迁移到水晶/凯末尔。当用户提交表单选择时,sinatra 版本将参数作为哈希发布

然后我将选择传递给路径render index.erb中的视图。post但是在 kemal 中,我可以收集参数,但无法弄清楚如何在视图中访问它们。我不断收到错误undefined local variable or method

如何让视图访问提交的参数?

这是该post路线的 sinatra 代码:

和相应的凯末尔代码:

0 投票
2 回答
398 浏览

crystal-lang - 在生产模式下启动晶体

我一直在通过构建它来运行我的 Crystal webapp,然后运行可执行文件。但是,它始终侦听端口 3000。

如何在 80 和 443 上构建/运行 Crystal webapps?

我也在使用凯末尔。这是我的示例应用程序。

建造:

跑步: