Использование Custom procfun с svSocketServer в R
Я пытаюсь настроить сервер в R, который читает сообщение JSON (строка), обрабатывает его и возвращает строковое сообщение JSON.
У меня было много трудностей с использованием стандарта
socketConnection
так что я думал, что я хотел бы попробовать
svSocket
упаковка.
Если я правильно читаю документацию, то я смогу сделать это с помощью
startSocketServer
с помощью пользовательского аргумента.
Вот мой код на стороне сервера
library(svSocket)
processTestSocket <-
function (msg, socket, serverport, ...)
{
cat("Message was:",msg,"\n")
output <- paste0("message:",msg)
return(output)
}
options(debug.Socket=TRUE)
startSocketServer(port=12525,server.name="EAServer",
procfun=processTestSocket)
Я использую в качестве тестового клиента.
$ sudo ss -tlunp |fgrep 12525
tcp LISTEN 0 4096 0.0.0.0:12525 0.0.0.0:* users:(("R",pid=70992,fd=6))
tcp LISTEN 0 4096 [::]:12525 [::]:* users:(("R",pid=70992,fd=7))
$ nc localhost 12525
Hello
$ sudo ss -tlunp |fgrep 12525
tcp LISTEN 0 4096 0.0.0.0:12525 0.0.0.0:* users:(("R",pid=70992,fd=6))
tcp LISTEN 0 4096 [::]:12525 [::]:* users:(("R",pid=70992,fd=7))
Порт открыт и слушает. Тем не мение,
nc
возвращается сразу после того, как я нажму return, и на консоли R нет вывода (хотя я установил параметр отладки).
Почему мой
procfun
не работает?
Я использую R 4.1.2 на Pop_OS 20.4.