相关疑难解决方法(0)

websocket自动关闭连接

我正在java中构建一个具有基于jetty的嵌入式websocket服务器的应用程序.客户端是Google Chrome中的默认websocket实现.只有在连接关闭一定时间后服务器和客户端之间没有传输时,一切正常.我不确定谁正在关闭连接:jetty服务器或chrome浏览器.

我认为解决方案是每隔x秒发送一条消息,但我打开了更好的解决方案.

所以......我的问题是:

  1. 这是websocket协议所需要的东西吗?在这种情况下,chrome浏览器正在关闭我的连接?

  2. 这是否与jetty相关并且或多或少与websocket协议有关?在这种情况下,如何在码头禁用此功能?

  3. 还有其他问题吗?

谢谢

更新:即使我发送1条消息/秒仍然关闭连接

javascript java google-chrome jetty websocket

67
推荐指数
5
解决办法
11万
查看次数

WebSocket握手:意外的响应代码:404

我正在编写我的第一个websocket程序并且正在获取"WebSocket握手:意外的响应代码:404",加载网页时出错.

我使用的是JDK 1.7和jboss 8(wildfly8.0).

有人可以帮忙吗?

window.onload = init;
var socket = new WebSocket("ws://localhost:8080/WebsocketHome/actions"); 
socket.onmessage = onMessage; 
Run Code Online (Sandbox Code Playgroud)

并以html开头

<head> 
 <title></title>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <script src="websocket.js" type="text/javascript"></script> 
 <link rel="stylesheet" type="text/css" href="style.css"> 
</head>
Run Code Online (Sandbox Code Playgroud)

javascript websocket wildfly-8

9
推荐指数
1
解决办法
4万
查看次数

在外部Tomcat上部署项目

我按照以下Spring Web套接字指南在stomp上使用Spring Web Sockets创建了一个应用程序. https://spring.io/guides/gs/messaging-stomp-websocket/ 当我使用Spring Boot嵌入式Tomcat运行它时,应用程序正常工作.但是现在我想将它部署在Tomcat 7的本地实例上.

我已将Application类修改为以下内容,

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(applicationClass, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(applicationClass);
    }

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
        context.scan(WebSocketConfig.class.getPackage().getName());

        servletContext.addListener(new ContextLoaderListener(context));
        ServletRegistration.Dynamic appServlet = servletContext.addServlet("appServlet", new DispatcherServlet(context));

        appServlet.setLoadOnStartup(1);
        Set<String> mappings = appServlet.addMapping("/app");

        if (!mappings.isEmpty()) {
            throw new IllegalStateException("Conflicting mappings found! Terminating. " + mappings);
        }
    }

    private static Class<Application> …
Run Code Online (Sandbox Code Playgroud)

java spring tomcat spring-boot spring-websocket

8
推荐指数
1
解决办法
835
查看次数

Spring Websocket和404连接状态

在Tomcat 7.0.50下运行的一个正在运行的Spring MVC 4.0.2项目中,我正在尝试使用简单的代理和sockjs stomp端点实现Spring Websocket,遵循官方参考.因此,在contextConfigLocation(DistpacherServlet属性)中,我添加了一个值"websocket-config.xml",其中包含:

>     <websocket:message-broker application-destination-prefix="/app" >
>           <websocket:stomp-endpoint path="/monitor">
>             <websocket:sockjs />
>           </websocket:stomp-endpoint>
>           <websocket:simple-broker prefix="/topic"/>
>     </websocket:message-broker>
Run Code Online (Sandbox Code Playgroud)

在eclipse控制台(catalina log)中,当我启动Tomcat时,会出现行

  • 初始化ExecutorService'clientInboundChannelExecutor'
  • 初始化ExecutorService'weboutOutboundChannelExecutor'
  • 初始化ExecutorService'messageBrokerSockJsScheduler'
  • 将URL路径[/ monitor/**]映射到[class org.springframework.web.socket.sockjs.support.SockJsHttpRequestHandler]类型的处理程序上

在jsp页面中我放了代码

....
var socket = new SockJS("monitor");
var stompClient = Stomp.over(socket); ....

不幸的是,当我从Chrome(v32)加载jsp页面时,我收到此错误:

无法加载资源:服务器响应状态为404(未找到)

http:// localhost:8080 /(ProjectName)/ monitor/info

显然我在本地进行此测试,然后所有其他webapp资源都可以在http:// localhost /(ProjectName)正确访问.

怎么了?

****更新2014年2月20日我试图按照这个解决的堆栈问题,建议使用Tomcat8 for Spring Websocket,不幸的是它不起作用

spring websocket sockjs

6
推荐指数
1
解决办法
1万
查看次数