如何使用带有sockjs的安全websocket

时间:2013-09-05 13:30:47

标签: websocket sockjs

我正在使用SockJS-client。 SockJS构造函数将相对URL作为

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 Implementation需要任何类似的配置吗?

2 个答案:

答案 0 :(得分:14)

通过sock JS客户端代码:我经历了客户端代码-sock JS负责处理 - 如果它使用WSS,那么它使用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 apis连接java客户端

答案 1 :(得分:0)

试试这段代码。

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