问题标签 [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.
http - 使用 Kemal 设置 HTTP 响应标头
我想在凯末尔实现这个答案。
我当前的设置有一个 pdf 文件app/public/map.pdf
,在我的主水晶文件中有以下代码:
当我通过在浏览器(firefox)中打开来测试我的代码时localhost:3000/map.pdf
,它会提示下载文件(而我希望它尝试显示它)。curl -I
结果如下:
我希望看到的地方Content-Type: application/pdf
。
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
(布局文件)
json - 在 kemal 的 POST 中获取 JSON
我想要的是 kemal 中的 POST 请求,其中主体有一定数量的我想要访问的键/值,然后是一个任意 JSON 对象,我只想对其进行字符串化并传递,然后再解析回 JSON。
我的问题是我显然无法正确输入类型。想象一个像这样的潜在 JSON 体:
现在我一直在尝试做的是以下几点:
现在显然我在访问“有效负载”时得到的东西是 type Hash(String, JSON::Type)
,这让我有点困惑。
任何想法我如何能够从请求正文中获取子 JSON,将其转换为 String 并返回 JSON?
websocket - 使用 Kemal 通过 websocket 将数据发送给体面的用户
如何将数据数据发送给通过 websockets 连接的体面用户?我知道,Websocket 连接会产生上下文,但是我如何过滤一个像样的套接字连接,以便根据上下文(env)仅向 1 个(或一些)连接的用户发送数据?
套接字必须包含房间还是需要 SOCKETS 才能成为哈希?
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 实现这一目标?
谢谢!
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”的引用
...随后是许多类似的错误消息、未定义的引用等。
我是否缺少依赖项?
http - Kemal 使用处理程序中间件缓存响应
Kemal 使用处理程序中间件缓存响应
我正在尝试使用 Kemal 缓存一些 GET 请求。
但是在第一个请求中,浏览器总是在等待响应。并在第二个请求中发送“已关闭流(IO::Error)”错误。
sinatra - 如何用kemal和水晶处理html表单数据
我想以 html 表单获取用户输入并使用数据填充数据库表。Sinatra 以哈希 params 的形式返回表单数据。我可以用 Kemal 和 Crystal 做到这一点吗?
请注意,我正在学习水晶,所以这可能还不可能。
提前感谢所有答案。与此同时,我还在挖掘:)
parameters - 在 kemal 中使用视图中的参数
我有一个简单的 ruby/sinatra 应用程序,我正在尝试迁移到水晶/凯末尔。当用户提交表单选择时,sinatra 版本将参数作为哈希发布
然后我将选择传递给路径render index.erb
中的视图。post
但是在 kemal 中,我可以收集参数,但无法弄清楚如何在视图中访问它们。我不断收到错误undefined local variable or method
。
如何让视图访问提交的参数?
这是该post
路线的 sinatra 代码:
和相应的凯末尔代码:
crystal-lang - 在生产模式下启动晶体
我一直在通过构建它来运行我的 Crystal webapp,然后运行可执行文件。但是,它始终侦听端口 3000。
如何在 80 和 443 上构建/运行 Crystal webapps?
我也在使用凯末尔。这是我的示例应用程序。
建造:
跑步: