我只是按照spring的指示将响应发送回特定用户,而不是广播消息。但最终,无法发送回响应消息。
这是我的js代码:
var stompClient = null;
function setConnected(connected) {
document.getElementById('connect').disabled = connected;
document.getElementById('disconnect').disabled = !connected;
document.getElementById('conversationDiv').style.visibility =
connected ? 'visible': 'hidden';
document.getElementById('response').innerHTML = '';
}
function connect() {
var socket = new SockJS('reqsample');
stompClient = Stomp.over(socket);
stompClient.connect({}, function(frame) {
setConnected(true);
console.log('Connected: ' + frame);
stompClient.subscribe('user/queue/resp', function(resp) {
var body = JSON.parse(resp.body);
showResp('cmid:' + body.cmid + ',reqName:' + body.reqName
+ ',custNo:' + body.custNo + ',qty:' + body.quantity);
});
stompClient.subscribe('user/queue/errors', function(resp) {
var body = JSON.parse(resp.body);
showResp(body);
});
});
}
function disconnect() {
stompClient.disconnect();
setConnected(false);
console.log("Disconnected");
}
function sendName() {
var name = document.getElementById('name').value;
stompClient.send("/app/req", {}, JSON.stringify({
'name' : name
}));
}
这是控制器:
@Controller
public class MessageController {
@MessageMapping("/req")
@SendToUser("/queue/resp")
public RespMessage greeting(ReqMessage message, Principal pc)
throws Exception {
System.out.println("---- received message: " + message == null ? "NULL"
: message.getName());
System.out.println("---- received user info: " + pc.getName());
RespMessage rm = new RespMessage();
rm.setCmid("CM_01");
rm.setCustNo("Cust_02");
rm.setQuantity("1000");
rm.setReqName(message.getName());
return rm;
}
@MessageExceptionHandler
@SendToUser("/queues/errors")
public String handleException(Exception ex) {
System.out.println(ex);
return ex.getMessage();
}
}
这是Spring配置:
<context:component-scan base-package="wx.poc7" />
<mvc:annotation-driven />
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<mvc:resources mapping="/js/**" location="/js/" />
<websocket:message-broker
application-destination-prefix="/app" user-destination-prefix="/user">
<websocket:stomp-endpoint path="reqsample">
<websocket:sockjs />
</websocket:stomp-endpoint>
<websocket:simple-broker prefix="/queue, /topic" />
</websocket:message-broker>
请帮忙。谢谢提前。
我已经尝试使用@SendToUser,@SendToUser(/队列/resp)和SimpMessagingTem板以及,完全不能响应消息到浏览器。
在Javascript中订阅频道时:
stompClient.subscribe('user/queue/errors', function(resp) {
var body = JSON.parse(resp.body);
showResp(body);
});
正确的路径是“用户/”用户名“队列/错误”
也看看这个主题:在SpringWebSocket上向特定用户发送消息
您的WebSocket配置看起来不错,但我认为问题在于正确的连接
URL:
new SockJS('reqsample')
请确保此URL有效。我看到您对stomp endpoint path=“reqsample”
使用了相同的方法。但是不要忘记,在web中有一个
。DispatcherServlet
映射。xml
尝试使用SockJS
构造函数(包括主机和端口)中的full
url。这样地:
http://localhost:8080/reqsample
如果您的DispatcherServlet
映射到/
。
当您为STOMPendpoint找到正确的URL时,您可以使用该JSP中的相对路径。
用户目的地前缀为/user
,但订阅目的地中似乎缺少/
。更改user/队列/resp
为/user/队列/resp
以接收客户端上的消息。
当我调用下面的代码时,我总是得到 用户的值。Id和密码有效。结果错误总是说“无效令牌”,我没有尽可能地看到它,因为我得到它并立即检查它和它的错误。这只是一个理智测试——我通常通过电子邮件向用户发送令牌,但这也不起作用。 UPDATE 1我在同一个控制器中定义UserManager,如下所示: UPDATE 2这是我的Application ationUserManager代码:
使用scandir()函数时,我收到以下php警告: Scandir无法打开目录:公共html/page2中不允许操作。php在线3 第2页。php 我想使用这个功能来打印我的根文件夹的文件和子目录,但它不工作。 有人知道怎么修吗?
有人能找出为什么我的不能工作。也许我错过了什么。我意识到这可能是愚蠢的没有任何更多的上下文比我所展示的,但请您询问,我将很乐意提供更多。 这是一段很大的代码,所以我不知道如何用它生成SSCE。您正在查看的是子类的构造函数,它包含3个面板。此时,只是一个。方法打开一个filechooser,然后加载选定的图像,该图像被绘制到上。图像显示良好,一切正常,除了我调整窗口大小时,没有滚动条。
问题内容: 我想使用Vim来查看结果(不在shell中)。我认为可以使用(将的结果用作的输入),但返回结果为: 有人可以解释吗? 问题答案: 通过传递到 vim中 ,您正在更改标准输入流。由于 vim 是交互式程序,因此它需要标准输入作为控制台。 如果要在vim中查看,应该告诉它您正在从stdin中读取文件(通过提供参数): 另外,您可以使用 更多 或 更少 : 后两者是优选的。如果通过管道 传送
我有模型类别。它可能有父类别和子类别列表。我写这个问题是因为找不到实体和自己相关的情况。 我试图这样实现它: 我保存实体,如: 我希望看到这样的情况: 但是在子模型中,我有递归循环。如何防止它? 是的,我也使用了@JsonIgnore。但是我不确定这是不是一个好的做法。但是如果我有一个案例,当我需要一个类别时,我真的需要将它发送给父母的UI。@JsonIgnore可以产生这个吗?