gpt4 book ai didi

javascript - 更改脚本文件时必须重建 Erlang 项目

转载 作者:行者123 更新时间:2023-11-30 16:35:28 25 4
gpt4 key购买 nike

我正在学习 erlang,我尝试了这个项目 - https://github.com/hcs42/cowboy_tutorial_webchat .

我用

构建它
./rebar compile generate skip-deps=true && rel/chat/bin/chat console

在 LAMP 的情况下,如果我要更改 .js 文件,我只会重新加载页面并应用新的更改。

对于这个 erlang 项目,每次我更改 .js 文件中的某些内容时,我都必须使用 rebat 重新编译和生成。为什么会这样?

此外,如果我查看 JS 实现,消息是使用

socket.send(message);

并在服务器端接收为:

websocket_handle({text, Msg}, Req, State) ->
{reply, {text, << "You said: ", Msg/binary >>}, Req, State};

如果 cowboy 接受 {text,Msg},Req,State 但客户端只发送文本,这是如何工作的?客户端也永远不会收到 {reply,{text,YouSaid...},而只会收到纯文本消息?

最佳答案

关于重建,这个项目正在生成一个 Erlang release ,这是一个目录结构,包含运行应用程序所需的完整系统。每次运行 rebar generate 时,它都会重新创建版本,制作静态文件的副本并使用该副本。如果您就地构建项目(在开发中更常见),那么 Cowboy 将直接从您的源代码树提供文件,您将能够在不重建服务器的情况下获取新的更改。

至于 {text,Msg}{reply, ...} 元组,它们是由底层的 cowboy websockets 库代码创建的。它从套接字接收客户端数据,根据接收到的内容创建 {text, Msg} 元组和 Req 变量,然后调用 websocket_handle/3 使用这些值和 State 变量。当该处理函数返回一个 {reply, ...} 元组时,底层 websockets 代码从中提取消息并通过套接字将其发送回客户端。您可以在 cowboy_websocket_handler documentation 中找到有关 websocket_handle/3 函数的更多信息。 .

关于javascript - 更改脚本文件时必须重建 Erlang 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32756851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com