【问题标题】:How i can send data from mnesia via websocket我如何通过 websocket 从 mnesia 发送数据
【发布时间】:2014-02-04 01:58:21
【问题描述】:

我有 mnesia DB 和表艺术家:

(gw@gw)227> lookup:for_test().
{atomic,["Baltic Baroque","Anna Luca","Karel Boehlee Trio",
     "Bill Evans","Dino Saluzzi and  Anja Lechner",
     "Bill Evans Trio with Stan Getz","Duke Pearson",
     "The John Butler Trio"]}
(gw@gw)228>

我想通过 YAWS 中的 websocket 将此列表发送给客户端,但我该怎么做呢?我打破了我的想法......并且没有任何工作。请提供任何信息。

最好的问候!

【问题讨论】:

    标签: websocket erlang mnesia yaws


    【解决方案1】:

    您必须将此字符串列表转换为二进制文件,并且通过 web 套接字传递,顺便说一下,您在接收端进行什么样的数据处理,我的意思是您想将其作为 JSON 发送,或者只是逗号分隔价值观?

    【讨论】:

    • 我有很好的功能来从 mnesia 获取 JSON 格式的数据。我如何通过 websocket 发送 JSON?
    【解决方案2】:

    Yeeeees ...我解决了我的问题! 我的 YAWS 手柄

    handle_message({text, <<"q2">>}) ->
    Var555 = unicode:characters_to_binary(my_json4:handle()),
    {reply, {text, <<Var555/binary>>}};
    

    而我的 mnesia 选择 + 转换为 JSON。 my_json4.erl

    Data = [{obj,
             [{art_id, Line#tmp.artist_id},
              {art,    unicode:characters_to_binary(Line#tmp.artist)},
              {alb_id, Line#tmp.album_id},
              {alb,    unicode:characters_to_binary(Line#tmp.album)},
              {path,   unicode:characters_to_binary(Line#tmp.albumpath)},
              {image,  unicode:characters_to_binary(Line#tmp.image)},
              {tracks, [unicode:characters_to_binary(X) ||X <- Line#tmp.tracks]}]}
            || Line <- Lines],
    JsonData = {obj, [{data, Data}]},
    rfc4627:encode(JsonData).
    
    handle() ->
     QHandle = qlc:q( [ X ||
       X <- mnesia:table(artists),
       X#artists.artist_id == 2]
     ),
     Records = do(qlc:q([{tmp, X#artists.artist_id, X#artists.artist, A#albums.album_id, A#albums.album, A#albums.albumpath, A#albums.image, A#albums.tracklist} ||
        X <- QHandle,
        A <- mnesia:table(albums),
        A#albums.artist_id == X#artists.artist_id])
    ),
    Json = convert_to_json(Records),
    Json.
    
    
    do(Q) ->
    F = fun() ->
                qlc:e(Q)
        end,
    {atomic, Value} = mnesia:transaction(F),
    Value.
    

    【讨论】:

      猜你喜欢
      • 2011-06-04
      • 2021-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-28
      • 1970-01-01
      • 2017-01-09
      • 2018-05-14
      相关资源
      最近更新 更多