結論:ContextPathの部分を適切に設定しないといけなかった
まずは結論です
CONNECTION時にはContextPathは必要ですが
SENDとSUBSCRIBE時にはContextPathは必要ありませんでした
これいっぱい検索したのですが、どこにも記載なかったので
備忘録としてここで記載しておきます
websocketとは?
クライアントとサーバが双方向で通信することができるようになる
んだそうです
LINEとかって何もしてないのに勝手にメッセージが届きますよね
あれが双方向通信です、つまり、サーバー側からクライアント側に
勝手に通信しちゃうことができるってことですね
公式のやり方をマネしているはずなのになぜか動かない…
以下を参考にwebsocketの処理を追加したのです
Spring Boot WebSocket でインタラクティブ Web アプリケーション作成 - 公式サンプルコード
Spring Boot の概要から各機能の詳細までが網羅された公式リファレンスドキュメントです。開発者が最初に読むべきドキュメントです。
あと以下も参考にしました。こっちの方が色々書いてあるので参考になります。
26. WebSocket Support
私の陥った事象
stompでCONNECTEDになったのでSEND処理をしたのに
なぜか動かない…
tomcatが通信ブロックしているのか?とか
Spring Securityがなにか通信をブロックしているのか?
とか考えて本当に色々試してみましたが
結論、冒頭の通りContextPathを全てにおいて記載していたのが
間違いだったようです
参考:ContextPathとは?
ContextPathとは簡単にいうとURLの最初のところです…
ごめんなさい、上記はちゃんとした説明じゃないので
以下とか見るか自分で調べてみてください
コンテキストパス(contextpath)とは
コンテキストパス(contextpath)についてまとめています。
間違っていたパターンと正解のパターン
公式のスクリプトを用いて説明します
以下が間違っていた例です
var contextPath = '/aaa'; // ここにコンテキストパスを設定
function connect() {
var socket = new SockJS(contextPath + '/gs-guide-websocket');
stompClient = Stomp.over(socket);
stompClient.connect({}, function (frame) {
setConnected(true);
console.log('Connected: ' + frame);
stompClient.subscribe(contextPath + '/topic/greetings', function (greeting) {
showGreeting(JSON.parse(greeting.body).content);
});
});
}
function sendName() {
stompClient.send(contextPath + "/app/hello", {}, JSON.stringify({'name': $("#name").val()}));
}
で、以下が正常に動作したパターンです
var contextPath = '/aaa'; // ここにコンテキストパスを設定
function connect() {
var socket = new SockJS(contextPath + '/gs-guide-websocket');
stompClient = Stomp.over(socket);
stompClient.connect({}, function (frame) {
setConnected(true);
console.log('Connected: ' + frame);
stompClient.subscribe('/topic/greetings', function (greeting) {
showGreeting(JSON.parse(greeting.body).content);
});
});
}
function sendName() {
stompClient.send("/app/hello", {}, JSON.stringify({'name': $("#name").val()}));
}
stompClient.subscribe
と
stompClient.send
の
contextPathを取り除きました
これ必要なかったみたいです…
これだけで動作しました…
これを動かすためにほぼ一週間調査で仕事が終わりました…
動いた時マジで「よっしゃぁぁぁぁああー!!」
て叫びました