【问题标题】:YAWS Websocket TroubleYAWS Websocket 故障
【发布时间】:2011-12-13 07:46:23
【问题描述】:

我正在尝试让hereYAWS 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,则回显服务器会连接并完全按预期工作。

谁能给我一个提示我做错了什么(或者,给我指出一个工作示例的来源)?

【问题讨论】:

    标签: erlang websocket yaws


    【解决方案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 目录中的所有模块。如果其他功能缺少其他模块,则也需要下载它们。

    【讨论】:

      猜你喜欢
      • 2020-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-05
      • 2016-09-09
      • 1970-01-01
      • 2016-03-13
      • 1970-01-01
      相关资源
      最近更新 更多