【问题标题】:Erlang and websocketsErlang 和 websockets
【发布时间】:2015-02-17 18:58:15
【问题描述】:

前段时间我在 Erlang 和 websocket 上找到了 Joe Armstrong 的示例,但我无法让它工作。

我修复了 Erlang 代码中的一个错误和几个警告,但使用 Apache 我无法获得好的结果。

谁能通过一个非常简单的例子给我一些提示?我是否需要像普通的 PHP 文件一样将带有 JavaScript 的网页放在 Apache 目录中?

【问题讨论】:

  • 很难给出任何好的建议,考虑到问题的模糊性。分为三部分:1. Erlang 代码,2. javascript 代码,3. Apache 及其配置。您可能希望分解问题并针对每个问题获得具体帮助。
  • 是的,你是对的,我正在寻找一个非常简单的网页和 erlang 示例……就像乔的示例一样

标签: erlang websocket


【解决方案1】:

Joe 的 websocket 示例已经过时,并且依赖于过时的协议版本。最新的浏览器使用更新的版本 (draft-00)

截至今天,misultin 提供了一个不错的 erlang 实现。经过测试并与当前浏览器兼容:

https://github.com/ostinelli/misultin/blob/master/src/misultin_websocket.erl

【讨论】:

  • Misultin 已被关闭——真可惜,这是一个不错的框架。
【解决方案2】:

Yaws 网络服务器提供了一个 websocket 实现。我还写了一个行为来简化基于 ws 的应用程序的编写。它是我的 Erlang 工具的一部分(嗯,实际上是第一个):

https://github.com/schemeway/erlang-tools

【讨论】:

    【解决方案3】:

    我发现SockJS-Erlang 库运行良好。最重要的是,如果 websocket 不可用,它支持后备传输。它使用Cowboy(虽然是旧版本)作为底层服务器,这很好,因为它易于集成。 This escriptthis HTML page 会给你一个可以玩的工作演示。

    这是一个带注释的例子:

    start_link(_) ->
        application:start(sockjs),
        application:start(cowboy),
    
        % generate a SockJS handler
        SockjsState = sockjs_handler:init_state(
                        <<"/browser_socket">>, fun handle_client/3, state, []),
    
        % build the dispatch routes for Cowboy integrating the SockJS handler
        Routes = [{'_',  [{[<<"echo">>, '...'],
                           sockjs_cowboy_handler, SockjsState}]}],
    
        % start the cowboy server
        cowboy:start_listener(http, 100,
                              cowboy_tcp_transport, [{port,     8081}],
                              cowboy_http_protocol, [{dispatch, Routes}]),
    
    % called when a new client connects
    handle_client(Conn, init, state) -> {ok, state};
    
    % called when data is received 
    handle_client(Conn, {recv, Data}, state) ->
      % reply to client
      Conn:send(Data);
    
    % called when connection is closed
    handle_client(_Conn, closed, state) -> {ok, state}.
    

    我对 Apache 的建议是使用 HAProxy 进行 WebSocket 连接,使用 Apache 提供 Javascript 和 PHP。

    【讨论】:

      猜你喜欢
      • 2011-04-01
      • 2019-01-14
      • 2013-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多