2013-09-05 55 views
2

我正在使用SockJS客戶端。 SockJS構造函數有一個相對URL作爲如何使用sock js的安全websockets

var ws= new SockJS('/spring-websocket-test/sockjs/echo', undefined,{protocols_whitelist: [transport]}); 

我們在哪裏表明WSS://被用來代替WS://。如果我嘗試絕對URL,它會給出錯誤:

XMLHttpRequest cannot load ws://localhost:8080/appname/app. Cross origin requests are only supported for HTTP. 
_ws_onclose. wasClean: false code: 1002 reason: Can't connect to server 

不知道爲什麼會出現此錯誤。在Spring Server實現上需要的任何類似的配置?

回答

12

通過襪子JS客戶端代碼走了。我通過客戶端代碼-sock去JS照顧它 - 如果它的HTTPS它使用WSS否則它WS

var that = this; 
var url = trans_url + '/websocket'; 
if (url.slice(0, 5) === 'https') { 
    url = 'wss' + url.slice(5); 
} else { 
    url = 'ws' + url.slice(4); 
} 

無需通過使用SockJS構造函數的WS或WSS(實際上甚至不是HTTP/HTTPS) - 只需相對URL就足夠了。 SockJs客戶端庫負責處理它。 我遇到了一個更令人驚訝的事實,它在URL的末尾附加了「/ websocket」 - 這給了我線索爲什麼我無法使用jetty websocket-client API連接java客戶端

+0

+1 for ur answer。它幫助了我。也請幫助這個http://stackoverflow.com/questions/29035552/sockjs-tomcat8-websockets-404-error?noredirect=1#comment46424068_29035552 –

0

試試看看這個代碼。

var ws= new SockJS('http://localhost:8080/sockjs/echo', undefined,{protocols_whitelist: [transport]}); 
+0

它不關於如何擊中服務器,我可以用相對的ULR來做什麼 - 我在哪裏指定WSS? – cpandey05

+0

您必須使用http或htts而不是ws或wss。 新的SockJS('HTTPS://'+ window.location.host +'/ sockjs/echo') 此代碼連接如'wss:// localhost:port/sockjs/echo' – moro