2017-11-11 22 views
1

this tutorialの接続では、websocketsという接続を提供するSpringブートアプリケーションを構築していますが、Spring Boot自体が提供するもの以外のクライアントからこれらのWebソケットに接続することはできません。CORSとSpring Websocket

complete directory in the GitHub repository that accompanies the tutorialには、最終的なスプリングブートコードが含まれています。私はindex.htmlapp.jsファイルをこのリポジトリから取り出し、Node.jsサーバー上で動作する別のクライアントを作成しました。その後、私はlocalhost:8080(Spring Bootが実行されているところ)を指すように接続文字列を置き換えました。その後、Node.jsサーバーを実行してWebソケットを使用しようとしましたが、動作しません。

最初の問題は.setAllowedOrigins("*")StompEndpointRegistryレジストリに追加することで簡単に解決されました。この設定では、websocketに接続することができましたが、ソケットからメッセージを返すことはありません。

私は何が欠けているのだろうか...誰に問題があるか知っていますか?

ザ・はindex.htmlapp.jsindex.jsに改称)のファイルを抽出し、テスト目的のためにthe Node.js server can be found here。これを実行するには、依存関係(npm install)をインストールしてから、npm startを発行します。サーバーはhttp://localhost:3000/で応答します。

答えて

0

実際、質問/問題はかなり愚かでした。

var socket = new SockJS('http://localhost:8080/gs-guide-websocket'); 
// ... 
stompClient.subscribe('http://localhost:8080/topic/greetings', cb); 
// ... 
stompClient.send("http://localhost:8080/app/hello", ...); 

私が変更されている必要がありますのみの行が最初のものだった。問題は、私が外部アプリケーションにHTML/JSファイルを抽出するとき、私はhttp://localhost:8080/...にコード内のすべてのハードコーディングされた三点を変更したことでした。他の2つは既に開いているソケット上のトピックへのメッセージsubscribesendのメッセージです。したがって、接頭辞としてURLを必要としません。

var socket = new SockJS('http://localhost:8080/gs-guide-websocket'); 
// ... 
stompClient.subscribe('/topic/greetings', cb); 
// ... 
stompClient.send("/app/hello", ...);