我试图在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)
上面的代码有两个问题:
Python中有类似的question,答案是反过来解决问题:
在我的情况下 2。发送消息涉及繁重的计算,我不想为每个对等的请求执行这些操作 - 我希望守护进程每隔一秒对所有需要该消息的人执行它们。
我确实设法使用txt文件使该方案工作,即守护进程每秒在文件中重写一个新值,客户端在需要时读取该文件。不等待同行的参与。但是,写入/读取文件并不像套接字连接那么快。