我用html和javascript编写了Websocket Client。和Java中的Websocket服务器。
var webSocket = new WebSocket('ws://localhost:8080/websocketendpoint');
@ServerEndpoint("/websocketendpoint")
public class WebSocketExample {
WebSocket连接到' ws:// localhost:8080 / websocketendpoint' 失败:WebSocket握手期间出错:意外的响应代码: 404
您能否建议如何创建websocket uri并使用服务器进行配置
答案 0 :(得分:0)
我有一个带sockJS + stomp和Spring的小项目。
你需要一个配置:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/app");
config.setUserDestinationPrefix("/user");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/user").withSockJS();
}
}
这个想法也是在服务器端创建一个控制器:
@MessageMapping("/user")
@SendToUser("/topic/auth")
public JsonMessageWrapper process(JsonMessageWrapper jmw,
SimpMessageHeaderAccessor headerAccessor)
在客户端,您可以这样订阅:
function connect() {
var socket = new SockJS(/*[[@{/user}]]*/); // tricky mechanism of ThymeLeaf, produces a link attached to URL of deployed webapp with proper context
stompClient = Stomp.over(socket);
stompClient.connect({}, function(frame) {
setConnected(true);
var subscribeUrl = '/topic/auth';
stompClient.subscribe( subscribeUrl + '-user' + socket.sessionId, function(response){
showMessage(response.body);
});
});
}
这样你就发了一条信息:
function send() {
var message = document.getElementById('message').value;
stompClient.send("/app/user", {}, message);
}
P.S。我知道@Transactional使用不正确。