Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring 4 Websocket-什么都没有发生_Java_Spring_Spring Mvc_Spring Websocket - Fatal编程技术网

Java Spring 4 Websocket-什么都没有发生

Java Spring 4 Websocket-什么都没有发生,java,spring,spring-mvc,spring-websocket,Java,Spring,Spring Mvc,Spring Websocket,我正在学习Spring4WebSocket,如果有人能指导我一步一步地学习Spring4WebSocket,或者能给我推荐一些书,让我找到关于上述主题的一步一步的实用方法,我将不胜感激 但在这之前,我需要一些帮助来处理我试图使用Tomcat8在eclipse上执行的代码片段 index.html <!DOCTYPE html> <html> <head> <title>Hello WebSocket</title> <script

我正在学习Spring4WebSocket,如果有人能指导我一步一步地学习Spring4WebSocket,或者能给我推荐一些书,让我找到关于上述主题的一步一步的实用方法,我将不胜感激

但在这之前,我需要一些帮助来处理我试图使用Tomcat8在eclipse上执行的代码片段

index.html

<!DOCTYPE html>
<html>
<head>
<title>Hello WebSocket</title>
<script src="https://raw.githubusercontent.com/spring-guides/gs-messaging-stomp-websocket/master/complete/src/main/resources/static/sockjs-0.3.4.js"></script>
<script src="https://raw.githubusercontent.com/spring-guides/gs-messaging-stomp-websocket/master/complete/src/main/resources/static/stomp.js"></script>
<script type="text/javascript">
    var stompClient = null;

    function setConnected(connected) {
        document.getElementById('connect').disabled = connected;
        document.getElementById('disconnect').disabled = !connected;
        document.getElementById('conversationDiv').style.visibility = connected ? 'visible' : 'hidden';
        document.getElementById('response').innerHTML = '';
    }

    function connect() {
        var socket = new SockJS("<c:url value='/hello'/>");
        stompClient = Stomp.over(socket);
        stompClient.connect('', '', function(frame) {
            setConnected(true);
            console.log('Connected: ' + frame);
            stompClient.subscribe("<c:url value='/topic/greetings'/>", function(greeting){
                showGreeting(JSON.parse(greeting.body).content);
            });
        });
    }

    function disconnect() {
        stompClient.disconnect();
        setConnected(false);
        console.log("Disconnected");
    }

    function sendName() {
        var name = document.getElementById('name').value;
        stompClient.send("<c:url value='/app/hello'/>", {}, JSON.stringify({ 'name': name }));
    }

    function showGreeting(message) {
        var response = document.getElementById('response');
        var p = document.createElement('p');
        p.style.wordWrap = 'break-word';
        p.appendChild(document.createTextNode(message));
        response.appendChild(p);
    }
</script>
</head>
<body>
<noscript><h2 style="color: #ff0000">Seems your browser doesn't support Javascript! Websocket relies on Javascript being enabled. Please enable
Javascript and reload this page!</h2></noscript>
<div>
<div>
    <button id="connect" onclick="connect();">Connect</button>
    <button id="disconnect" disabled="disabled" onclick="disconnect();">Disconnect</button>
</div>
<div id="conversationDiv">
    <label>What is your name?</label><input type="text" id="name" />
    <button id="sendName" onclick="sendName();">Send</button>
    <p id="response"></p>
</div>
</div>
</body>
</html>
GreetingController.java

import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Controller;

@Controller
public class GreetingController {

@MessageMapping("/hello")
@SendTo("/topic/greetings")
public Greeting greeting(HelloMessage message) throws Exception {
    Thread.sleep(3000); // simulated delay
    System.out.println(message.getName());
    return new Greeting("Hello, " + message.getName() + "!");
}

}
HelloMessage.java

package com.iiw.controller.relationship;

public class HelloMessage {

private String name;

public String getName() {
    return name;
}

}
WebsocketConfig.xml

<websocket:message-broker application-destination-prefix="/app">
   <websocket:stomp-endpoint path="/hello">
        <websocket:sockjs/>
   </websocket:stomp-endpoint>
   <websocket:simple-broker prefix="/topic"/>
</websocket:message-broker>

web.xml

    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         id="WebApp_ID"
         version="3.0">
  <display-name>CRUDWebAppMavenized</display-name>

   <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>

   <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml , /WEB-INF/SecurityContext.xml , /WEB-INF/WebSocketConfig.xml</param-value>

</context-param>

   <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>

  <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>classpath:log4j.xml</param-value>
    </context-param>

    <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

  <welcome-file-list>

    <welcome-file>index.jsp</welcome-file>

  </welcome-file-list>
</web-app>

积垢
org.springframework.web.context.ContextLoaderListener
上下文配置位置
/WEB-INF/applicationContext.xml、/WEB-INF/SecurityContext.xml、/WEB-INF/WebSocketConfig.xml
org.springframework.web.util.Log4jConfigListener
log4jConfigLocation
类路径:log4j.xml
春天
org.springframework.web.servlet.DispatcherServlet
1.
春天
/
springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain
/*
index.jsp

问题是每次我运行这段代码时,都没有提供任何更改连接功能

发件人:

function connect() {
        var socket = new SockJS("<c:url value='/hello'/>");
        stompClient = Stomp.over(socket);
        stompClient.connect('', '', function(frame) {
            setConnected(true);
            console.log('Connected: ' + frame);
            stompClient.subscribe("<c:url value='/topic/greetings'/>", function(greeting){
                showGreeting(JSON.parse(greeting.body).content);
            });
        });
    }
function connect() {
        var socket = new SockJS("<c:url value='/hello'/>");
        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() {
        var name = document.getElementById('name').value;
        stompClient.send("<c:url value='/app/hello'/>", {}, JSON.stringify({ 'name': name }));
    }
function sendName() {
        var name = document.getElementById('name').value;
        stompClient.send('/app/hello', {}, JSON.stringify({ 'name': name }));
    }

如果这有帮助,就试试吧。你已经试过了。但是没有一个luckI在评论中添加了它,请尝试进行此更改并让我知道。希望此帮助扫描您的共享值和日志。完整的web.xml文件浏览器控制台输出如下:打开web套接字。。。sockjs-0.3.4.js:807获取404(未找到)sockjs-0.3.4.js:807 AbstractXHRObject.\u startsockjs-0.3.4.js:841(匿名函数)stomp.js:130哇!与undefinedI的连接断开参见404(未找到)sockjs-0.3.4.js:807请验证您的hello/info路径。这似乎不正确。我不知道这个“信息”字是从哪里来的
function sendName() {
        var name = document.getElementById('name').value;
        stompClient.send('/app/hello', {}, JSON.stringify({ 'name': name }));
    }