我是一名学生,学习如何使用Spring Boot构建webapps。我有一个项目,我正在试验websockets。
尝试连接已部署应用程序上的聊天时遇到500状态错误。
我已经部署了我的项目here。 要测试,请使用登录:gohan@gohan.com / password
当我通过Spring Tool Suite在我自己的计算机上托管应用程序时,聊天功能完美无瑕。仅在我的EC2 Ubuntu Server 16.04 LTS(HVM)实例上,我在尝试连接聊天时遇到此500级错误。
我已按照以下教程了解聊天应用: https://www.callicoder.com/spring-boot-websocket-chat-example/。
这是我的websocket配置文件:
package com.web.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.*;
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws").setAllowedOrigins("*").withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.setApplicationDestinationPrefixes("/app");
registry.enableSimpleBroker("/channel");
}
}
有人可以向我解释为什么使用websockets的应用程序在本地托管时功能完美,但在部署时却没有?
此外,有人可以提供解决方案,我可以理解为什么会出现这个问题吗?
答案 0 :(得分:0)
我能够使用以下配置部署和运行您的应用程序(在Tomcat服务器上):
public class Project1Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Project1Application.class);
}
public static void main(String[] args) {
SpringApplication.run(Project1Application.class, args);
}
/*@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
Connector ajpConnector = new Connector("AJP/1.3");
ajpConnector.setPort(9090);
ajpConnector.setSecure(false);
ajpConnector.setAllowTrace(false);
ajpConnector.setScheme("http");
tomcat.addAdditionalTomcatConnectors(ajpConnector);
return tomcat;
}*/
}
为了测试它,我只是将它打包到ROOT.war并将其扔到webapps
文件夹中。 Websockets按预期工作。
希望这有帮助。
PS。事实证明This article对我非常有用。祝你好运!