Spring mvc wildfly 8.2.1+;spring mvc+;SpringWebSocket(简单代理)和#x2B;sockjs+;跺脚

Spring mvc wildfly 8.2.1+;spring mvc+;SpringWebSocket(简单代理)和#x2B;sockjs+;跺脚,spring-mvc,wildfly-8,spring-websocket,sockjs,stompjs,Spring Mvc,Wildfly 8,Spring Websocket,Sockjs,Stompjs,我对websocket有一个问题,特别是SimpMessageTemplate和提供spring(版本4.3.4.RELEASE)的简单代理。 我在课堂上向用户发送消息: @Autowired SimpMessagingTemplate simpMessagingTemplate; public void onMessage(final TextMessage message, Session session) throws JMSException { .... this.s

我对websocket有一个问题,特别是SimpMessageTemplate和提供spring(版本4.3.4.RELEASE)的简单代理。 我在课堂上向用户发送消息:

@Autowired
SimpMessagingTemplate simpMessagingTemplate;

public void onMessage(final TextMessage message, Session session) throws JMSException {
    ....
    this.simpMessagingTemplate.convertAndSendToUser(
                        userInfo.getIp(), "/queue/resp", message.getText());
}
这是我的websocket配置:

    <websocket:message-broker application-destination-prefix="/app" user-destination-prefix="/user">
        <websocket:stomp-endpoint path="/workplace">
            <websocket:handshake-interceptors>
                <bean class="org.springframework.web.socket.server.support.HttpSessionHandshakeInterceptor"/>
            </websocket:handshake-interceptors>
            <websocket:sockjs/>
        </websocket:stomp-endpoint>
        <websocket:simple-broker prefix="/topic, /queue, /user"/>
    </websocket:message-broker>
}

和我在客户端上的js代码:

    <script>
var service = {},  socket = {
client: null,
stomp: null
};

service.userIpAddress = 'someIpAddress';
service.RECONNECT_TIMEOUT = 25000;
service.SOCKET_URL = 'http://localhost:8080/examinee_workplace/rest/workplace/';


service.send = function(message) {
console.info('try send message = ', message);
var id = Math.floor(Math.random() * 1000000);
socket.stomp.send("/app/req", {
priority: 9
}, JSON.stringify({
message: message,
id: id
}));
};

var startListener = function() {
console.info('subscribe');
socket.stomp.subscribe('/user/' + service.userIpAddress + '/queue/resp', function(resp) {
console.warn('resp = ', resp);
});
socket.stomp.subscribe('/user/' + service.userIpAddress + '/queue/errors', function(resp) {
var body = JSON.parse(resp.body);
console.warn('error body = ', body);
});
};

var reconnect = function() {
console.info('reconnect. this.RECONNECT_TIMEOUT = ', this.RECONNECT_TIMEOUT);
setTimeout(service.initialize,1000);
};

service.initialize = function() {
socket.client = new SockJS(service.SOCKET_URL);
socket.stomp = Stomp.over(socket.client);
socket.stomp.connect({}, startListener);
socket.stomp.onclose = reconnect;
};

service.initialize();

var服务={},套接字={
客户机:空,
跺脚:空
};
service.userIpAddress='someIpAddress';
service.u超时=25000;
service.SOCKET\u URL='0http://localhost:8080/examinee_workplace/rest/workplace/';
service.send=函数(消息){
console.info('try send message=',message);
var id=Math.floor(Math.random()*1000000);
socket.stomp.send(“/app/req”{
优先事项:9
},JSON.stringify({
讯息:讯息,,
id:id
}));
};
var startListener=函数(){
控制台信息(“订阅”);
socket.stomp.subscribe('/user/'+service.userIpAddress+'/queue/resp',function(resp){
console.warn('resp=',resp);
});
socket.stomp.subscribe('/user/'+service.userIpAddress+'/queue/errors',函数(resp){
var body=JSON.parse(resp.body);
console.warn('error body=',body);
});
};
var=function(){
console.info('reconnect.this.reconnect\u TIMEOUT=',this.reconnect\u TIMEOUT');
setTimeout(service.initialize,1000);
};
service.initialize=函数(){
socket.client=newsockjs(service.socket\u URL);
socket.stomp=stomp.over(socket.client);
socket.stomp.connect({},startListener);
socket.stomp.onclose=重新连接;
};
service.initialize();

最后是我的问题——我在客户机上接收消息,但不是全部。某些消息未传递到客户端(防病毒卡巴斯基已关闭)。
你知道为什么吗?

我只是用JavaConfig替换了SpringXML配置。
我在这里找到了答案:

我只是用JavaConfig替换了SpringXML配置。 我在这里找到了答案:

@MessageMapping("/req")
@SendToUser(destinations = "/queue/resp")
public String greeting(String greeting)
        throws Exception {
    System.out.println("greeeeeeeeeeeeeeeeeeeeeeeeeeeeeting: " + greeting);
    return "{ \"date\": "+ new Date().getTime() + ", \"message\": " + greeting + "}";
}

@MessageExceptionHandler
@SendToUser("/queue/errors")
public String handleException(Exception ex) {
    ex.printStackTrace();
    System.out.println(ex);
    return ex.getMessage();
}
    <script>
var service = {},  socket = {
client: null,
stomp: null
};

service.userIpAddress = 'someIpAddress';
service.RECONNECT_TIMEOUT = 25000;
service.SOCKET_URL = 'http://localhost:8080/examinee_workplace/rest/workplace/';


service.send = function(message) {
console.info('try send message = ', message);
var id = Math.floor(Math.random() * 1000000);
socket.stomp.send("/app/req", {
priority: 9
}, JSON.stringify({
message: message,
id: id
}));
};

var startListener = function() {
console.info('subscribe');
socket.stomp.subscribe('/user/' + service.userIpAddress + '/queue/resp', function(resp) {
console.warn('resp = ', resp);
});
socket.stomp.subscribe('/user/' + service.userIpAddress + '/queue/errors', function(resp) {
var body = JSON.parse(resp.body);
console.warn('error body = ', body);
});
};

var reconnect = function() {
console.info('reconnect. this.RECONNECT_TIMEOUT = ', this.RECONNECT_TIMEOUT);
setTimeout(service.initialize,1000);
};

service.initialize = function() {
socket.client = new SockJS(service.SOCKET_URL);
socket.stomp = Stomp.over(socket.client);
socket.stomp.connect({}, startListener);
socket.stomp.onclose = reconnect;
};

service.initialize();