无法运行Spring Web Socket演示。

12 浏览
0 Comments

无法运行Spring Web Socket演示。

我正在尝试运行一个Spring Web Socket的演示,但无法完全测试它。我使用的是Java 7和Tomcat 7.0.50。在服务器启动时,我没有得到任何错误,但当我打开连接到它的网页时,我得到404页面未找到的错误。我不确定我是否在配置中漏掉了什么,以使其正常运行,以及如何能够从js端连接它。\n我有以下XML文件:\n


    
    
        
            
        
        
    

\n我的Controller类是:\n

@Controller
public class SwsService {
    @MessageMapping("/hello")
    @SendTo("/topic/greetings")
    public Greeting greeting(HelloMessage message) throws Exception {
         return new Greeting("Hello, " + message.getName() + "!");
   }
    public String getGreeting() {
        return "Hello, you are in!";
    }
}

\n我调用它的js是:\n

var sock = new SockJS("/hello");
sock.onopen = function () {
    console.log("open");
};
sock.onclose = function () {
    console.log("closed");
};
sock.onmessage = function (message) {
    console.log("msg", message);
};

\n当我运行Tomcat时,控制台输出:\n

Feb 19, 2014 3:28:47 PM org.apache.catalina.core.AprLifecycleListener init
INFO: 在生产环境中,基于APR的Apache Tomcat Native库可以实现最佳性能,但在java.library.path上没有找到:C:\Program Files\Java\jre7\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre6/bin/client;C:/Program Files/Java/jre6/bin;C:/Program Files/Java/jre6/lib/i386;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files\TortoiseGit\bin;C:\Python24;C:\Program Files\TortoiseSVN\bin;C:\Program Files\nodejs\;C:\Program Files\Git\cmd;C:\Users\harsh\AppData\Roaming\npm;E:\IDE\eclipse_indigo;;.
Feb 19, 2014 3:28:47 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} 设置属性“source”为“org.eclipse.jst.jee.server:SWS”时,未找到匹配的属性。
Feb 19, 2014 3:28:48 PM org.apache.coyote.AbstractProtocol init
INFO: 正在初始化ProtocolHandler["http-bio-8080"]
Feb 19, 2014 3:28:48 PM org.apache.coyote.AbstractProtocol init
INFO: 正在初始化ProtocolHandler["ajp-bio-8009"]
Feb 19, 2014 3:28:48 PM org.apache.catalina.startup.Catalina load
INFO: 初始化处理时间为1412毫秒
Feb 19, 2014 3:28:48 PM org.apache.catalina.core.StandardService startInternal
INFO: 正在启动服务Catalina
Feb 19, 2014 3:28:48 PM org.apache.catalina.core.StandardEngine startInternal
INFO: 正在启动Servlet Engine:Apache Tomcat/7.0.50
Feb 19, 2014 3:28:51 PM org.apache.catalina.core.ApplicationContext log
INFO: 在类路径上未检测到Spring WebApplicationInitializer类型
Feb 19, 2014 3:28:51 PM org.apache.catalina.core.ApplicationContext log
INFO: 正在初始化Spring根WebApplicationContext
Feb 19, 2014 3:28:51 PM org.springframework.web.context.ContextLoader initWebApplicationContext
INFO: Root WebApplicationContext:初始化开始
Feb 19, 2014 3:28:51 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: 刷新Root WebApplicationContext:启动日期[Wed Feb 19 15:28:51 IST 2014];上下文层次结构的根
Feb 19, 2014 3:28:52 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: 从ServletContext资源[/WEB-INF/classes/conf/SwsContext.xml]加载XML bean定义
Feb 19, 2014 3:28:53 PM org.springframework.scheduling.concurrent.ExecutorConfigurationSupport initialize
INFO: 正在初始化ExecutorService'clientInboundChannelExecutor'
Feb 19, 2014 3:28:53 PM org.springframework.scheduling.concurrent.ExecutorConfigurationSupport initialize
INFO: 正在初始化ExecutorService'clientOutboundChannelExecutor'
Feb 19, 2014 3:28:53 PM org.springframework.scheduling.concurrent.ExecutorConfigurationSupport initialize
INFO: 正在初始化ExecutorService'messageBrokerSockJsScheduler'
Feb 19, 2014 3:28:53 PM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler
INFO: 将URL路径[/hello/**]映射到类型为[class org.springframework.web.socket.sockjs.support.SockJsHttpRequestHandler]的处理程序
Feb 19, 2014 3:28:53 PM org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup start
INFO: 在阶段2147483647中启动Beans
Feb 19, 2014 3:28:53 PM org.springframework.web.context.ContextLoader initWebApplicationContext
INFO: Root WebApplicationContext:初始化完成,耗时2173毫秒
Feb 19, 2014 3:28:53 PM org.apache.coyote.AbstractProtocol start
INFO: 正在启动ProtocolHandler["http-bio-8080"]
Feb 19, 2014 3:28:53 PM org.apache.coyote.AbstractProtocol start
INFO: 正在启动ProtocolHandler["ajp-bio-8009"]
Feb 19, 2014 3:28:53 PM org.apache.catalina.startup.Catalina start
INFO: 服务器启动,耗时5842毫秒

\n浏览器控制台输出:\n

GET http://localhost:8080/hello/info 404 (Not Found) sockjs-0.3.min.js:27
closed 

\n我该如何成功测试它?

0
0 Comments

问题出现的原因可能是sockjs.js文件不存在于服务器上,或者某个路径配置错误。根据给出的示例链接,可以使用以下方式配置stomp端点:

public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/portfolio").withSockJS();
    }
}

然后在JavaScript中可以这样调用端点:

var socket = new SockJS('/spring-websocket-portfolio/portfolio');
var stompClient = Stomp.over(socket);

其中`/spring-websocket-portfolio`是应用程序的根部署路径。

为了解决这个问题,可以尝试在webapp文件夹中添加一个assets文件夹,将所有的stomp和sockjs.js文件放在其中。可以参考上述给出的运行示例链接中的示例。

参见问题的更新。我尝试了这个方法,但是不起作用。 🙁

0
0 Comments

Not able to run spring web socket demo的问题出现的原因是可能缺少必要的Chrome扩展或者项目中的依赖没有正确配置。解决方法是根据以下步骤进行操作。

1. 确保已安装这个 Chrome扩展,该扩展可以帮助测试Websockets。

2. 检查项目中是否正确引入了必要的依赖。可以参考simple-chat项目,该项目使用了Spring Boot和Websockets。确保在项目的pom.xml文件中正确配置了相关依赖。

3. 检查项目的配置文件,确保已正确配置了Websockets。可以参考Spring Boot的官方文档,了解如何配置Websockets。

4. 检查项目中的代码,确保已正确实现了Websockets的相关功能。可以参考simple-chat项目中的代码,了解如何使用Spring Boot和Websockets实现聊天功能。

通过以上步骤的操作,应该能解决Not able to run spring web socket demo的问题。如果问题仍然存在,可能需要进一步检查环境配置或者查找其他可能的原因。

0
0 Comments

问题原因:根据代码中的提示,问题出现在创建SockJS实例的部分。根据用户的描述,当项目以war包形式运行时,需要指定应用的上下文路径。

解决方法:根据用户的描述,需要在创建SockJS实例时指定应用的上下文路径。具体操作是将代码中的/contextPath替换为你的应用的上下文路径。

示例代码:

var socket = new SockJS('/yourContextPath/webui/hello');

注意:将yourContextPath替换为你的应用的上下文路径。

这个解决方法可以解决运行Spring Web Socket Demo时出现的问题。

0