Erlang/OTP + Lua で HTTP テスト #3

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 の接続を持ったままという戦略もあるだろうから、そこはよく考える事にする。

まずは、ここまで。続く。

Written by

Erlang/OTP / 時雨堂 / WebRTC / E2EE

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store