[英]How to Complete a WebSocket Handshake in javascript(client) and java (server)?
我已经用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以及如何使用服务器进行配置
我有一个使用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);
}
PS我知道@Transactional使用不正确。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.