non vorrei lavorare

昔はおもにプログラミングやガジェット系、今は?

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")

関連記事

WebSocketつながり

4年前の記事

3年前の記事

2年前の記事

1年前の記事