YAWS Websocket 故障
Posted
技术标签:
【中文标题】YAWS Websocket 故障【英文标题】:YAWS Websocket Trouble 【发布时间】:2011-12-13 07:46:23 【问题描述】:我正在尝试让here 的YAWS websocket 示例在我的本地运行。它是一个基本的基于 ws 的回显服务器。
我有
YAWS 在localhost:8080
上设置并运行(直接来自 Debian 存储库;除了将其指向新的根目录外,没有任何 conf 更改)
this page 底部的代码清单包裹在<erl>
标记中保存为websockets_example_endpoint.yaws
this page 保存为 index.yaws
(我实际上复制/粘贴了它的视图源,将其保存为该文件并将套接字请求指向 localhost:8080
而不是 yaws.hyber.org
)。
当我在浏览器中访问localhost:8080/websockets_example_endpoint.yaws
时,它会按预期显示文本“你不是网络套接字客户端!走开!”。当我访问localhost:8080
时,它会将我指向启用了 javascript 的表单,但单击“连接”按钮时什么也不做。如果我将index.yaws
指向yaws.hyber.org
而不是localhost:8080
,则回显服务器会连接并完全按预期工作。
谁能给我一个提示我做错了什么(或者,给我指出一个工作示例的来源)?
【问题讨论】:
【参考方案1】:有一个gitbub项目,我已经创建了:https://github.com/f3r3nc/yaws-web-chat/
这也是嵌入偏航和扩展群聊的示例。
注意,WebSocket 的标准正在开发中,因此 yaws 和浏览器应该支持相同的 WS 版本才能正常工作。
yaws 1.91 适用于 Safari 版本 5.1.1 (6534.51.22),但不适用于 Chrome (15.0.874.102),可能不适用于 (14.x)。
【讨论】:
c
ing 文件然后运行 ybed_sup:start_link().
给了我=ERROR REPORT==== 28-Oct-2011::13:55:52 === Error in process <0.52.0> with exit value: undef,[yaws_api,embedded_start_conf,["/tmp/yawstest",[port,7000,listen,0,0,0,0,docroot,"/tmp/yawstest",appmods,["/",hello]],[id,"embedded"],"embedded"],ybed,run,0]
(我做了一个更改,就是将 yaws_api include
指向我的实际 yaws_api.hrl 文件系统)【参考方案2】:
对我来说,问题是我没有 basic_echo_callback 模块文件,因为我使用包存储库而不是构建表单源来安装 yaws。
如果在交互模式下运行 yaws 'yaws -i',错误很明显:
=ERROR REPORT==== 7-Dec-2016::21:33:49 ===
Cannot load callback module 'basic_echo_callback': nofile
=ERROR REPORT==== 7-Dec-2016::21:33:49 ===
Failed to start websocket process: nofileq
这几乎是我在 Ubuntu 16.01 上从头开始的过程:
sudo apt install yaws
cd ~
mkdir yaws
cd yaws
mkdir src
cd src
cd src wget https://github.com/klacke/yaws/raw/master/examples/src/basic_echo_callback.erl
cd ..
mkdir www
cd www
wget https://raw.githubusercontent.com/klacke/yaws/master/www/websockets_example_endpoint.yaws
wget http://yaws.hyber.org/websockets_example.yaws
cd ..
#set-up server config file...
vim yaws.conf
我的看起来像:
src_dir = /home/pocketsand/yaws/src
<server localhost>
port = 8000
listen = 127.0.0.1
docroot = /home/pocketsand/yaws/www
</server>
确保客户端中的端点正确:
vim www/websockets_example.yaws
...
如果已经运行,则停止服务器并使用“yaws -i”启动服务器并浏览到:http://localhost:8000/websockets_example.yaws
它之所以有效,是因为每次服务器加载配置文件时,它都会编译指定 src 目录中的所有模块。如果其他功能缺少其他模块,则也需要下载它们。
【讨论】:
以上是关于YAWS Websocket 故障的主要内容,如果未能解决你的问题,请参考以下文章