更改脚本文件时必须重新构建Erlang项目
Erlang project must be rebuilt when changing script file
我正在学习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};
如果牛仔接受{text,Msg},Req,State,但客户端只发送文本,这是如何工作的?此外,客户端从未收到{回复,{文本,YouSaid…},但只收到纯文本信息?
关于重建,这个项目正在生成一个Erlang版本,它是一个目录结构,包含运行应用程序所需的完整系统。每次运行rebar generate
时,它都会重新创建发布,生成静态文件的副本并使用该副本。如果您在原地构建项目(在开发中更常见),那么Cowboy将直接从源代码树中提供文件,您将能够在不重新构建服务器的情况下获取新的更改。
对于{text,Msg}
和{reply, ...}
元组,它们是由底层的cowboy websockets库代码创建的。它从套接字接收客户端数据,根据收到的数据创建{text, Msg}
元组和Req
变量,然后用这些值和State
变量调用websocket_handle/3
。当该处理函数返回{reply, ...}
元组时,底层websockets代码从中提取消息并通过套接字将其发送回客户端。您可以在cowboy_websocket_handler文档中找到有关websocket_handle/3
函数的更多信息。
- 通过Grunt任务注入内容,具体取决于asp.net项目构建配置
- 尝试构建 ember js 项目时出错
- 在HTML5画布中为学校项目构建一个表情符号
- 构建项目时,在服务器上找不到子项目
- 使用Sencha项目进行生产构建后的奇怪行为
- 在Cordova项目中添加.js会破坏构建过程
- 在项目中构建 js 函数
- 尝试使用PHP / Javascript构建一个可点击的索引,该索引显示单击的每个项目的数据
- 构建 JavaScript 项目 Travis-CI 时出错
- 如何使用 Backbone.Marionette 构建用于将项目创建到列表中的应用程序
- 如何从我的反应原生项目构建安卓 apk
- 挖空 JS 构建项目列表
- 构建一个角度合理的 JS Web 项目
- 如何避免轮播项目在页面构建时作为列表加载
- 用gulp构建一个项目,需要JS搞砸
- 如何为team foundation service构建javascript测试项目
- 我应该如何用外部脚本构建Meteor项目
- 推荐Go项目结构和构建系统,用于具有需要编译的静态资产的项目
- 如何在核心项目中构建特定于客户端的逻辑
- 复杂构建/项目管理