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)。

【讨论】:

cing 文件然后运行 ​​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 故障的主要内容,如果未能解决你的问题,请参考以下文章

iOS 上的 WebSocket

websock第一次连不上window

websocke

Flask websocker

websocke前世今生

websocke 在线测试地址