使用 javascript 通过 WebSockets 连接到 Rserve

Connecting to Rserve with WebSockets using javascript

我在 Ubuntu 服务器上安装了 Rserve。我想使用 javascript 与其进行交互。我知道 rserve npm "provides a javascript implementation of the websocket Rserve protocol" 但它似乎不再维护了,我希望能够使用原生 javascript (或像 jQuery 这样的 JS 库) . 我正在尝试连接并拥有一个可以用作控制台的专用 R 会话。

这是我的 Rserv.conf(来自 this 文档)

remote enable
websockets.qap enable
websockets.port 8080

这是我的 JS

var ws = new WebSocket("ws://my.app:8080");
ws.onopen = function()
{
    ws.binaryType = 'arraybuffer'
    ws.send("Hello world");
    console.log("Message is sent...");
 };

 ws.onmessage = function (evt) 
 { 
      console.log("Message received:"); 
      var received_msg = evt.data;
      console.log(received_msg);
  };

 ws.onclose = function()
 { 
      console.log("Connection is closed..."); 
 };

我收到两条消息:

Message is received:
Rsrv0103QAP1

--------------

Message is received:
ArrayBuffer {}

之后,连接关闭。 如何保持连接打开?如何转换 ArrayBuffer 以便获取响应的内容?

非常广泛地查看 rserve-js - it is a full Rserve client for JavaScript and it supports both OCAP and plain QAP mode (including OOB callbacks). We use it in RCloud 这也可能是寻找其用途的一个很好的来源(在 OCAP 模式下更安全且适合 Web 应用程序) - 它特别是因为它实际上做了什么你正在尝试做(以及更多)。