3

SockJS クライアントを使用しています。SockJS コンストラクターは、相対 URL を次のように受け取ります。

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

WS:// の代わりに WSS:// を使用することをどこで示しますか。絶対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 実装で必要な同様の構成はありますか?

4

2 に答える 2

17

sock 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 クライアント ライブラリがそれを処理します。私が遭遇したもう 1 つの驚くべき事実は、URL の末尾に「/websocket」が追加されていることです。

于 2013-09-16T14:29:58.517 に答える
1

このコードを試してください。

var ws= new SockJS('http://localhost:8080/sockjs/echo', undefined,{protocols_whitelist: [transport]});
于 2013-09-12T08:55:41.703 に答える