Emacs Lispで socketプログラミング
http://mattn.kaoriya.net/software/vim/20160129114716.htm
Emacsが socket使えることは知っていたが, 使ったことがなかったので書いてみました.
コード
(require 'json) (let ((proc (open-network-stream "test" (get-buffer-create "*test*") "localhost" 8888))) (set-process-filter proc (lambda (proc output) (let ((resp (json-read-from-string output))) (message "ただ今: %s" (aref resp 1))))) (process-send-string proc (json-encode [1 "GET"])) (process-send-eof proc))
open-network-streamは processオブジェクトを返します. 後は start-processみたく扱ってやればよいようです. 非同期です. set-process-filterで callback関数を指定します. process-send-stringでサーバに sendします.
サーバプログラムは上記の記事に載っているものを使っています. 無駄な処理がいくらか含まれてしまっていますが...
結果
サーバを動かし, 上記の式を評価すると以下のようになります.