Я создал сервер 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
соединений?
Спасибо!