2013-09-05 285 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