Lua で WebSocket のテストができるようになった。connection は数値で管理することにした。table とか色々考えたが、素直に数値で。
local connection, error = ws.connect("ws://echo.websocket.org")-- send_binary 以外に send_text を実装した
local ok, error = ws.send_binary(connection, "spam!")
if error then
...
end-- type は "binary" または "text" が戻ってくる
local frame, type, error = ws.recv(connection)
if error then
...
end
assert(frame == "spam!")
これで動作するようになった。 Erlang 上で動く Lua なのでこれを並列に動作させることも可能だし、これは一回送って受け取ってをやっているだけだが、ループさせたり、特定回数送ったり、タイマーで発火させたりとか色々やりたい放題だ。
Erlang のコード自体は 300 行いかない程度。といっても gun や luerl や gproc を使ったりしている。
課題としては終了処理だろうか、close を明示的にしなかったり luerl の実行が終わったら WS の接続を終了する必要がある。ただ一度 lua のコードを抜けて、再度別シナリオに WebSocket の接続を持ったままという戦略もあるだろうから、そこはよく考える事にする。
まずは、ここまで。続く。