前提・実現したいこと
いつもお世話になっております。
現在、springでwebsockeを使用したチャットアプリを作成しようとしています。
WebSocket接続をしようとしたところ下記、画像の「■コンソールログ」が出力され、接続することがでず何故接続が
できないのか調べたり検索したりしたのですが、まったくわからない状態です。
初歩的な質問でしたら申し訳ありません。
どなたか原因が分かる方ご教授お願い致します。
発生している問題・エラーメッセージ
■コンソールログ
sockjs-0.3.min.js:27 *** SockJS CDN is being retired on Dec 1st *** Please transition to a public CDN. See https://github.com/sockjs/sockjs-client/issues/198 for more information.
chatscreen.js:12 stompClient:[object Object]
chatscreen.js:13 endpoint:http://localhost:8080/chat/hello
stomp.min.js:9 Opening Web Socket...
stomp.min.js:9 Web Socket Opened...
stomp.min.js:9 >>> CONNECT
accept-version:1.2,1.1,1.0
heart-beat:10000,10000
stomp.min.js:9 Whoops! Lost connection to undefined
該当のソースコード
java
1package jp.co.chat.bean; 2 3import org.springframework.context.annotation.Configuration; 4import org.springframework.messaging.simp.config.MessageBrokerRegistry; 5import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer; 6import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker; 7import org.springframework.web.socket.config.annotation.StompEndpointRegistry; 8 9@EnableWebSocketMessageBroker 10@Configuration 11public class ChatWebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer { 12 13 @Override 14 public void registerStompEndpoints(StompEndpointRegistry registry) { 15 registry.addEndpoint("/hello").withSockJS(); // WebSocketのエンドポイント (接続時に指定するエンドポイント)を指定 16 } 17 18 @Override 19 public void configureMessageBroker(MessageBrokerRegistry registry) { 20 registry.setApplicationDestinationPrefixes("/chat"); // アプリケーション(Controller)でハンドリングするエンドポイントのプレフィックス 21 registry.enableSimpleBroker("/topic", "/queue"); // Topic(Pub-Sub)とQueue(P2P)を有効化 >>> メッセージブローカーがハンドリングする 22 } 23
java
1package jp.co.chat.controller; 2 3import java.util.concurrent.TimeUnit; 4 5import org.springframework.messaging.handler.annotation.MessageMapping; 6import org.springframework.messaging.handler.annotation.SendTo; 7import org.springframework.stereotype.Controller; 8import org.springframework.web.bind.annotation.RestController; 9 10@RestController 11public class ChatWebSocketController { 12 13 String test = "テスト"; 14 @MessageMapping("/hello") // エンドポイントの指定 15 @SendTo("/topic/greetings") // メッセージの宛先を指定 16 public String greeting(String test) { 17 return test; 18 } 19 20} 21
javascript
1function setConnected(connected) { 2 document.getElementById('connection').disabled = connected; 3} 4 5function connection() { 6 var endpoint = 'http://' + location.host + '/chat/hello'; 7 var socket = new SockJS(endpoint); 8 stompClient = Stomp.over(socket); 9 console.log('stompClient:' + socket); 10 console.log('endpoint:' + endpoint); 11 stompClient.connect({} , function (name) { 12 setConnected(true) 13 console.log('匿名関数:' + name); 14 stompClient.subscribe('/chat/topic/greetings' , function (test) { 15 console.log('匿名関数:' + test); 16 showTest(JSON.parse(test.body).content); 17 }) 18 }) 19 20} 21 22function send() { 23 var name = document.getElementById('textinput').value; 24 stompClient.send("/chat/hello", {}, JSON.stringify({'send': name})); // メッセージを送信 25} 26 27function showTest(message) { 28 var response = document.getElementById('response'); 29 var p = document.createElement('p'); 30 p.appendChild(document.createTextNode(message)); 31 response.appendChild(p); 32}
jsp
1<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 2<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> 3<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %> 4<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" session="false" %> 5<!DOCTYPE html> 6<html> 7<head> 8<link href="<c:url value="/resources/css/bootstrap.min.css" />" rel="stylesheet"> 9<link href="<c:url value="/resources/css/chatscreen.css" />" rel="stylesheet"> 10</head> 11<body> 12 13 <div class="flexside"> 14 <button id="connection" onclick="connection()">ルーム作成</button> 15 <div class="flexcontainer"> 16 <div class="flexmain"> 17 <p id="response"></p> 18 </div> 19 20 <div class="flexfutter"> 21 <input type="text" id="textinput"> 22 <button id="send" onclick="send();">送信</button> 23 </div> 24 </div> 25 </div> 26 27<script src="<c:url value="/resources/js/jquery-3.3.1.min.js" />"></script> 28<script src="<c:url value="/resources/js/bootstrap.min.js" />"></script> 29<script src="<c:url value="/resources/js/stomp.min.js" />"></script> 30<script src="<c:url value="/resources/js/sockjs-0.3.min.js" />"></script> 31<script src="<c:url value="/resources/js/chatscreen.js" />"></script> 32</body> 33</html>
java
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
springframework:4.2.4.RELEASE
回答1件
あなたの回答
tips
プレビュー