Как создать Stomp Websocket Client в. NET, который использует HTTP? - PullRequest
0 голосов
/ 23 марта 2020

Я создал сервер Websocket в Java с Spring Boot

Моя конфигурация сервера выглядит следующим образом:

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic", "/queue");
        config.setApplicationDestinationPrefixes("/app");
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry
            .addEndpoint("/my-websocket")
            .setAllowedOrigins("*")
            .withSockJS();
    }

Я создал клиента в Javascript, и соединение выглядит следующим образом:

function connect() {
    var myUsername = document.getElementById('from').value;
    var host = 'http://localhost:8080/my-websocket';
    var socket = new SockJS(host);
    stompClient = Stomp.over(socket);
    stompClient.connect({}, function (frame) {
        stompClient.send('/app/status', {}, JSON.stringify(createUserStatus('AVAILABLE')));
        stompClient.subscribe('/topic/status', function (message) {
            receiveStatus(JSON.parse(message.body));
        });
        stompClient.subscribe('/queue/private.message.' + myUsername, function (message) {
            displayMessage(JSON.parse(message.body));
        });
    });
}

Теперь я хочу создать клиент в. NET, но каждая найденная мной клиентская библиотека Stomp не позволяет http быть URI, и мой сервер принимает только http соединения. Мой сервер не может проанализировать соединения ws и tcp, и я не могу найти там клиента, который использует http.

В моем клиенте. NET, когда я пытаюсь подключиться к string brokerUri = "tcp://localhost:8080/my-websocket"

Мой сервер выдает это исключение:

client-id:ID:DESKTOP-AA29FJ6-52716-637205011942817986-0:0
host:localhost
accept-version:1.0,1.1
heart-beat:10000,30000

 ]
2020-03-22 19:13:14.414 DEBUG 25036 --- [nio-8080-exec-2] o.apache.coyote.http11.Http11Processor   : Error parsing HTTP request header

java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens

Как создать Websocket соединение. NET, которое может подписываться на разные темы и очереди и отправлять сообщения через http?

Или как сервер может обрабатывать ws или tcp соединений?

Спасибо!

...