こんばんは、@kjunichiです。 この記事は、@kjunichiの2018年パーソナルアドベントカレンダーの2日目の記事です。
背景
とあるアドベントカレンダーの記事を書くためにJuliaでWebSocketを扱う方法を調べ中
WebSockets.jlを使う
にズバリなパッケージがあり、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")
関連記事
- JulialangにHTTP2サーバーをさせたら
- IJuliaをHerokuの無料枠で動かした
- mruby-juliaでPythonもmrubyから呼び出せるようになった
- aobenchをjuliaでやってみた
- 1/7がつくる楕円をJulia言語でプロットする
- Julia言語で任意の点を散布図を描画するには
- Windows(MSVC)でmrubyからGPU対応のTensorflowを動かせた
- Juliaでaobenchを使って並列処理を試した その1
- Nが現れる素数をJuliaでやってみた
- JuliaでYoutuberを目指す
- Juliaで日本語のワードクラウドをやってみた
WebSocketつながり
- Safariだとオレオレ証明書でWebSocketが使えない!?
- node.jsのwsモジュールによるWebSocketとPythonやJuliaのWebSocketの違い
- Minecraft Win10版にnode.js以外でGo言語でもつなげた