Spring Boot WebSockets简单的例子

时间:2015-08-18 10:43:30

标签: sockets spring-boot

我试图在Spring Boot中创建一个非常基本的套接字服务器示例。 我有以下课程

WebSocketConfigurer:

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {

    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(myHandler(), "/path");
    }

    @Bean
    public WebSocketHandler myHandler() {
        return new SimpleWebSocketHandler();
    }

}

TextWebSocketHandler:

public class SimpleWebSocketHandler extends TextWebSocketHandler {

    private static Logger logger = LoggerFactory.getLogger(SimpleWebSocketHandler.class);


    @Override
    public void afterConnectionEstablished(WebSocketSession session) {
        logger.debug("Opened new session in instance " + this);
    }

    @Override
    public void handleTextMessage(WebSocketSession session, TextMessage message)
            throws Exception {
        String echoMessage = message.getPayload();
        logger.debug(echoMessage);
    }

    @Override
    public void handleTransportError(WebSocketSession session, Throwable exception)
            throws Exception {
        session.close(CloseStatus.SERVER_ERROR);
    }

}

应用:

@SpringBootApplication
public class WebSocketServerApplication {

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

然后我有一个C程序,它将打开一个套接字并将简单文本发送到服务器。

当我尝试在套接字上发送纯文本(例如“Hello”)时,我将以下错误消息发送回客户端:

HTTP/1.1 400 Bad Request
Server: Apache-Coyote/1.1
Transfer-Encoding: chunked
Date: Tue, 18 Aug 2015 09:22:05 GMT
Connection: close

服务器显示“解析HTTP请求标头时出错”消息。我假设这是预期的,因为服务器在嵌入式tomcat服务器中运行,并且仅为HTTP配置。

然后我尝试从C应用程序发送HTTP POST消息作为文本,例如

POST /path HTTP/1.0\r\n Content-Type: text/plain\r\n Content-Length: 5\r\n \r\n Hello

我在服务器端没有得到任何东西,客户端上的连接最终只是超时。

我错过了一些明显的东西?

我是否需要指定控制器类?当我在一个路径上注册Web套接字处理程序时,这个没有被覆盖吗?

0 个答案:

没有答案