non vorrei lavorare

2020年度からの小学校プログラミング教育の必修化を親として迎えるブロガーの書く、子供との日常

JuliaでWebSocketを扱うには

こんばんは、@kjunichiです。 この記事は、@kjunichiの2018年パーソナルアドベントカレンダーの2日目の記事です。

背景

とあるアドベントカレンダーの記事を書くためにJuliaでWebSocketを扱う方法を調べ中

WebSockets.jlを使う

github.com

にズバリなパッケージがあり、1.0以降のJuliaの場合、

Replからパッケージマネージャーを起動して、そこで

add WebSockets

か、

import Pkg;Pkg.add("WebSockets")

でインストールできた。

困っている点

.jlファイルにして、macOSの場合、以下のようにコマンドラインから他のスクリプト言語と同様に 起動すると、すぐに終了してしまい、WebSocketクライアントの応答を受け付けてくれない。

examplesフォルダにnothingなる命令がスクリプトの末尾に書いてあったので、真似してみたが、 NG。

using WebSockets

# define what to do with http requests, and with websocket upgrades.
serverWS =  ServerWS(
    (r) -> WebSockets.Response(200, "OK"),
                            (ws_server) -> (
                                writeguarded(ws_server, "Hello");
                                readguarded(ws_server)
                            )
);
# serve on socket 8000, but in a coroutine so we can do other things too.
@async WebSockets.serve(serverWS, 8000)
nothing

暫定対応

とりあえず、juliaコマンドを以下のようにREPLモードで起動

/Applications/Julia-1.0.app/Contents/Resources/julia/bin/julia

その後、includeでスクリプトファイルを読み込むことで、非同期処理の入力待ちをREPLでやってもらって 動かしている。

include("wstest.jl")

関連記事

4年前の記事

3年前の記事

2年前の記事

1年前の記事