首页 文章

Websocket服务器Spring Boot

提问于
浏览
1

我通过谷歌Chrome测试WebSocket ServerEndPoint时出现以下错误 .

2018-01-26 04:27:02 [http-nio-8090-exec-5] DEBUG oacoyote.http11.Http11Processor - 解析HTTP请求头“java.io.EOFException:null org.apache.tomcat时出错 . util.net.NioEndpoint $ NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1250)atg.apache.tomcat.util.net.NioEndpoint $ NioSocketWrapper.read(NioEndpoint.java:1190)at org.apache.coyote.http11.Http11InputBuffer . 填写(Http11InputBuffer.java:717)atg.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:366)atg.apache.coyote.http11.Http11Processor.service(Http11Processor.java:687)org.apache .coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)org.apache.coyote.AbstractProtocol $ ConnectionHandler.process(AbstractProtocol.java:868)at org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint) .java:1459)atg.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.ja va:1149)java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)at org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)at java.lang .Thread.run(Thread.java:748)

我在Google上搜索并发现,当你的网址过长时就会发生这种情况,但就我而言,情况并非如此 .

EndPoint网址: ws://localhost:8090/ExchangeService . 嵌入在Spring Boot中的Tomcat版本是8.5.23

这是ServerEndPoint

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;

@Configuration
@EnableWebSocket
public class WebSocketConfig  implements WebSocketConfigurer {

    @Autowired
    private ApplicationContext context;

    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(context.getBean(ExchangeService.class), "/ExchangeService"); }

}

2 回答

  • 1

    最后通过WebSocket配置中的setAllowedOrigins(“*”)解决了它

    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
            registry.addHandler(context.getBean(TestWebSocket.class), "/ExchangeService").setAllowedOrigins("*");
    
        }
    

    谢谢!

  • 0

    您的WebSocket endpoints 不起作用 . 类 WebSocketConfig 应该是这样的

    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer;
    import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
    import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
    
    @Configuration
    @EnableWebSocketMessageBroker
    public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
    
    
        @Override
        public void registerStompEndpoints(StompEndpointRegistry registry) {
            registry.addEndpoint("/exchange_service");
        }
    
    }
    

    (我使用的是Spring Boot 2.0.0.M7)

    为终点 ws://localhost:8090/exchange_service

相关问题