0

私は自分のコメットアプリケーションにデータをストリーミングしたいとyaws思っています。私はそれを読んで理解しようとしましたが、yaws の例は私にとって少し複雑なようです (私は Erlang を初めて使用します)。ただ頭が回らない…

これはyawsの例です(少し変更しました):

out(A) ->
    %% Create a random number
    {_A1, A2, A3} = now(),
    random:seed(erlang:phash(node(), 1),
                erlang:phash(A2, A3),
                A3),
    Sz = random:uniform(1),

    Pid = spawn(fun() ->
                        %% Read random junk
                        S="Hello World",
                        P = open_port({spawn, S}, [binary,stream, eof]),
                        rec_loop(A#arg.clisock, P)
                end),

    [{header, {content_length, Sz}},
     {streamcontent_from_pid, "text/html; charset=utf-8", Pid}].


rec_loop(Sock, P) ->
    receive
        {discard, YawsPid} ->
            yaws_api:stream_process_end(Sock, YawsPid);
        {ok, YawsPid} ->
            rec_loop(Sock, YawsPid, P)
    end,
    port_close(P),
    exit(normal).

rec_loop(Sock, YawsPid, P) ->
    receive
        {P, {data, BinData}} ->
            yaws_api:stream_process_deliver(Sock, BinData),
            rec_loop(Sock, YawsPid, P);
        {P, eof} ->
            yaws_api:stream_process_end(Sock, YawsPid)
    end.

必要なのは、上記のスクリプトを変換して、次のスクリプトと組み合わせることができるようにすることです。

mysql:start_link(p1, "127.0.0.1", "root", "azzkikr", "mydb"),
                {data, Results}  = mysql:fetch(p1, "SELECT*FROM messages WHERE id > " ++ LASTID),
                {mysql_result, FieldNames, FieldValues, NoneA, NoneB} = Results,
                parse_data(FieldValues, [], [], [], [], [])

Whereparse_data(FieldValues, [], [], [], [], [])は、エントリの JSON 文字列を返します。 このスクリプトを組み合わせると、データベースへの新しいエントリを常にチェックし、存在する場合は、comet のようにフェッチする必要があります。

ありがとう、皆さんが楽園に行けますように!

4

1 に答える 1