質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

WebSocket

WebSocketとは双方向・全二重コミュニケーションのためのAPIでありプロトコルのことを指します。WebSocketはHTML5に密接に結びついており、多くのウェブブラウザの最新版に導入されています。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Q&A

解決済

1回答

3958閲覧

springでWebSocketの接続が行えない。

pokemn

総合スコア16

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

WebSocket

WebSocketとは双方向・全二重コミュニケーションのためのAPIでありプロトコルのことを指します。WebSocketはHTML5に密接に結びついており、多くのウェブブラウザの最新版に導入されています。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

0グッド

1クリップ

投稿2019/04/07 13:44

編集2019/04/07 23:24

前提・実現したいこと

いつもお世話になっております。
現在、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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/04/07 22:06

エラーログはテキストで
pokemn

2019/04/07 23:25

申し訳ありません。 ログをテキストに変更しました。
guest

回答1

0

ベストアンサー

エラーログの内容はJavascriptのエラーのようです。
sockjs-0.3.min.jsはどのように入手されたものでしょうか?

最新版 sockjs-client v1.3.0 を使用してはいかがでしょうか?

ちなみに、私もWebSocket使用していますが、下記のバージョン構成で問題なく使用できています。

  • SpringBoot 1.5.6
  • sockjs-client:1.1.1
  • stomp-websocket:2.3.4

投稿2019/04/08 03:46

euledge

総合スコア2404

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pokemn

2019/04/21 02:30

解決致しました。 「sockjs-0.3.min.js」の入手場所がよろしくなかったようです。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問