2015-04-05 4 views
20

वेबसाइकिल सादे HTTP अनुरोधों से तेज़ हो सकते हैं और ब्राउज़र आमतौर पर अधिक वेबस्केट कनेक्शन खोल सकते हैं।Rstudio के चमकदार के लिए अपाचे प्रॉक्सी वेबसाइट्स कर सकते हैं?

मेरे ब्राउज़र है JavaScript कंसोल है कि जब तक मेरी चमकदार ऐप के कार्य और अपाचे proxypass सही ढंग से प्रॉक्सी है, WebSockets के माध्यम से काम नहीं कर रहे मुझे बता:

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

मैं अलग अलग तरीकों कि अपाचे विन्यस्त किया जा सकता देखा है प्रॉक्सी websockets करने के लिए। जैसे:

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/ 

मेरे सवाल है, इनमें से किसी भी चमकदार साथ प्रयोग के लिए अनुकूलित किया जा सकता?

+0

मुझे एक संबंधित समस्या है। अपाचे प्रॉक्सी का उपयोग करके मेरे चमकदार ऐप्स अर्ध व्यवस्थित रूप से डिस्कनेक्ट होते हैं, और मुझे चमकदार सर्वर लॉग में "RobustSockJS टक्कर" संदेश दिखाई देते हैं। Ws के लिए websocket प्रॉक्सीपास या/और proxypassreverse जोड़ना: सुधार करता है। –

उत्तर

1

अधिकतर आपकी आर फ़ाइल वेबसाइटों को बुरी तरह से संभालने वाली है।

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

और फिर निम्नलिखित कार्य करता है जो आपके द्वारा निर्धारित आप की जरूरत के रूप में:

अपने जावा स्क्रिप्ट में अपने HTML फ़ाइल में, आप की तरह कुछ है

socket.onopen = function() {} 
socket.onmessage = function got_packet(msg) {} 
socket.onclose = function(){} 

और अपने आर कोड में आप कुछ ऐसा है:

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) 

जहां एचटीएमएलडीएटी आपकी एचटीएमएल फाइल है।

तब के लिए 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 की पोर्ट संख्या है: मेजबान के 3838/पता है और पोर्ट: //127.0.0.1।

सुनिश्चित करें कि आप इनमें से किसी भी महत्वपूर्ण भाग को याद नहीं कर रहे हैं। आशा करता हूँ की ये काम करेगा।

+0

आपके उत्तर के लिए धन्यवाद हालांकि शाइनी-सर्वर से सीधे कनेक्ट होने पर वेबसाइटॉक पूरी तरह कार्यात्मक हैं। जब अपाचे का उपयोग करते हुए चमकदार सर्वर प्रॉक्सी किया जाता है, तो वेबसाइट्स सही ढंग से प्रॉक्सी नहीं होते हैं। – variable

+0

ओह! ठीक। उसके लिए माफ़ करना। मैं स्पष्ट रूप से समझ में नहीं आया था। –

+0

प्रॉक्सीपास आज़माएं, लेकिन प्रॉक्सीपास रिवर/चमकदार/ws: //127.0.0.1: 3838/ मुझे लगता है कि यह समस्या हो सकती है। –

संबंधित मुद्दे