gpt4 book ai didi

r - Rstudio的Shiny可以使用Apache Proxy Websockets吗?

转载 作者:行者123 更新时间:2023-12-03 12:20:23 27 4
gpt4 key购买 nike

Websocket可能比纯HTTP请求更快,并且浏览器通常可以打开更多websocket连接。

我的浏览器通过javascript控制台告诉我,尽管我的 Shiny 应用正常运行并且apache proxypass正确代理,但websocket无法正常工作:

WebSocket connection to 'wss://www.example.com/shiny/01_hello/__sockjs__/058/v193lng7/websocket' failed: WebSocket is closed before the connection is established.

我已经看到可以将Apache配置为代理WebSocket的不同方式。如:
    ProxyPass /shiny/  ws://127.0.0.1:3838/
ProxyPass /shiny/ wss://127.0.0.1:3838/
RedirectMatch ^/shiny$ /shiny/

和:
  RewriteEngine On
RewriteCond %{REQUEST_URI} ^/socket.io [NC]
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule /(.*) ws://localhost:3001/$1 [P,L]

ProxyPass / http://localhost:3001/
ProxyPassReverse / http://localhost:3001/

我的问题是,其中任何一种都可以与发亮剂一起使用吗?

最佳答案

您的R文件很可能严重处理了Websocket。

在Java脚本的HTML文件中,您将看到以下内容:

var socket = new WebSocket("wss://"+hostlocation, "HelloR")

然后根据需要定义以下功能:
socket.onopen = function() {}
socket.onmessage = function got_packet(msg) {}
socket.onclose = function(){}

在您的R代码中,您有类似以下内容:
w = create_server(webpage=static_text_service(htmldata))
f = function(DATA,WS,...)
{
list(msg,p)= process(data)
websocket_broadcast(toJSON(list(msg=msg, fig=p)),WS$server)
}
set_callback("receive",f,w)
ctmp = tempfile()
itmp = tempfile()
daemonize(w)

其中htmldata是您的html文件。

然后将httpd.conf修改为:
<VirtualHost *:origin_port>
ProxyPass /shiny/ ws://127.0.0.1:3838/
ProxyPassReverse /shiny/ ws://127.0.0.1:3838/
</VirtualHost>

其中origin_port是起源的端口号,而ws://127.0.0.1:3838 /是主机的地址和端口。

确保您没有丢失任何这些关键部分。希望能帮助到你。

关于r - Rstudio的Shiny可以使用Apache Proxy Websockets吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29454469/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com