Использование 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.

0 ответов

Другие вопросы по тегам