R服务器广播数据

时间:2016-09-11 15:22:14

标签: r sockets server daemon

我试图在R中编写守护进程,因为它会将数据广播到某个数据管道,并且连接到此管道的任何对等方都会传输 last 值。我已经从here更改了服务器代码,因此我的服务器端看起来:

server <- function(){
  writeLines("Listening...")
  con <- socketConnection(host="localhost", port = 6011, blocking=TRUE,
                          server=TRUE, open="r+")
  while(TRUE){
    broadcast_msg <- as.character(Sys.time())
    writeLines(broadcast_msg, con) 
    Sys.sleep(1)
  }
  close(con)
}
server()

在客户端,我只需连接并阅读以下行:

con <- socketConnection(host="localhost", port = 6011, blocking=TRUE, server=FALSE, open="r+")
server_resp_update <- readLines(con, 1)
server_resp_update <- readLines(con, 1)
server_resp_update <- readLines(con, 1)

上面的代码有两个问题:

  1. 守护进程等待对等连接。但是我希望它能在任何情况下广播数据。
  2. 当我多次连接并向客户端读取数据时,我会在连接后的第一行发送,但不是最后一次的最新值。
  3. Python中有类似的question,答案是反过来解决问题:

    1. 等待连接
    2. 发送消息
    3. 转到第1步
    4. 在我的情况下 2。发送消息涉及繁重的计算,我不想为每个对等的请求执行这些操作 - 我希望守护进程每隔一秒对所有需要该消息的人执行它们。

      我确实设法使用txt文件使该方案工作,即守护进程每秒在文件中重写一个新值,客户端在需要时读取该文件。不等待同行的参与。但是,写入/读取文件并不像套接字连接那么快。

0 个答案:

没有答案