我正试图从本地运行的YAWS websocket获取here示例。这是一个基于ws的基本回声服务器。
我有
localhost:8080
上设置并运行(直接来自Debian存储库;除了将其指向新的根目录之外没有任何更改)<erl>
websockets_example_endpoint.yaws
标记中包含的this page底部的代码清单
index.yaws
(我实际上复制/粘贴了该视图的源代码,将其保存为该文件,并将套接字请求指向localhost:8080
而不是{{1} })。当我在浏览器中访问yaws.hyber.org
时,它会显示文本“你不是网络套接字客户端!离开!”,正如预期的那样。当我访问localhost:8080/websockets_example_endpoint.yaws
时,它会将我指向启用javascript的表单,但单击时“连接”按钮不会执行任何操作。如果我将localhost:8080
指向index.yaws
而不是yaws.hyber.org
,则echo服务器会按预期连接并正常工作。
任何人都可以给我一个关于我做错的提示吗(或者,请指点我找一个有效的例子)?
答案 0 :(得分:2)
有一个gitbub项目,我已创建:
https://github.com/f3r3nc/yaws-web-chat/
这也是嵌入雅司病并通过群聊进行扩展的一个例子。
请注意,WebSocket的标准正处于开发阶段,因此浏览器应该支持相同的WS版本才能正常工作。
yaws 1.91适用于Safari版本5.1.1(6534.51.22)但不适用于Chrome(15.0.874.102),可能不适用于(14.x)。
答案 1 :(得分:0)
对我来说问题是我没有basic_echo_callback模块文件,因为我使用包存储库而不是构建表单源来安装偏航。
如果在交互模式'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目录中的任何模块。如果其他功能缺少其他功能,则还需要下载它们。