svSocket: R 軟體的 Socket Server/Client 套件

svSocket 套件可以用來建立簡單的 R-based Socket Server 與 Client。以下是一些基本的測試,包含串流資料(streaming data) 的動態圖形。

Step 1. 安裝 svSocket

install.packages(“svSocket”)

Step 2. 打開兩個 R GUI 視窗 sessions

第一個 R GUI (Server) 視窗先執行:

library(svSocket)
startSocketServer(port=8888)

然後在第二個 R GUI (Client) 視窗執行:

library(svSocket)
con = socketConnection(port=8888)
x = 1:10
# 把 x 送過去給 Server
evalServer(con,x,x)

此時在第一個 R 視窗(Server)打 x , 會出現:
[1] 1 2 3 4 5 6 7 8 9 10

Step 3. 更新 Server 的變數值

在第二個 R 視窗(Client) 輸入

evalServer(con,x, 11:20)

此時在第一個 R 視窗(Server) 打 x , 會出現:

[1] 11 12 13 14 15 16 17 18 19 20

Step 4. 在 Server 畫圖

在 Client R 視窗輸入

evalServer(con,plot(x))

此時在 Server R 視窗會出現 x 的圖形

Step 5. 即時串流資料傳輸與畫圖

(1) 在第一個 R 視窗(Server) 先輸入

v = 1

(2) 在第二個 R 視窗 (Client) 執行:

?View Code LANGUAGE
while (TRUE) {
evalServer(con,x,1+rnorm(1,0,0.01))
evalServer(con,"v=c(v,x);NULL")
Sys.sleep(0.01)
}

(3) 在第一個 R 視窗 (Server) 執行:

?View Code LANGUAGE
while (TRUE) {
plot(cumprod(tail(v,50)),type="l",main=date());Sys.sleep(0.01)
}

這個時候,就可以看到 Server 的圖形是一直持續在畫出並更新資料

註:

以上測試程式碼,是由底下 Youtube svSocket Demo 影片改寫而來