我阅读了关于用户目的地的Spring文档。我想使用transtAndSendToUser
方法仅向特定用户发送消息。
这是java代码:
@Controller
public class WebsocketTest {
@Autowired
public SimpMessageSendingOperations messagingTemplate;
@PostConstruct
public void init(){
ScheduledExecutorService statusTimerExecutor=Executors.newSingleThreadScheduledExecutor();
statusTimerExecutor.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
messagingTemplate.convertAndSendToUser("myuser","/queue/test", new Return("test"));
}
}, 5000,5000, TimeUnit.MILLISECONDS);
}
}
这是客户端js代码:
var socket = new WebSocket('ws://localhost:8080/hello');
stompClient = Stomp.over(socket);
stompClient.connect("myuser","mypass", function(frame) {
setConnected(true);
console.log('Connected: ' + frame);
stompClient.subscribe('/topic/greetings', function(greeting){
showGreeting(JSON.parse(greeting.body).value);
});
stompClient.subscribe('/user/queue/test', function(greeting){
showGreeting(JSON.parse(greeting.body).value);
});
});
首先,考虑用户价值是否正确?
StampClient.connect("myuser",...
为什么这个测试不起作用?此用户未收到任何消息。如果我将目的地切换到/topic/greetings
,并将方法更改为convertAndSend()
,这将起作用,但显然是作为广播,而不仅仅是根据请求发送给特定用户。
我试图设置一个回复单用户与此代码:
@MessageMapping("/hello")
@SendToUser("/queue/test")
public Return test(){
return new Return("test");
}
这是工作,这不是我需要的,因为这个答复只是从客户端的消息。似乎我无法使用convertAndSendToUser()
处理来自服务器的未经请求的消息。
也许现在回答这个问题已经晚了,但对于那些可能面临类似问题的人来说,我缺少的是:您连接的websocket URL也应该是一个安全的URL。如果不是,则用户和会话之间没有映射,因此您无法使用convertandsendouser()
向用户发送消息。
因此,例如,您使用URL模式连接到endpoint/hello
,那么它应该是一个安全的endpoint。
在客户端订阅/user/queue/test
,并使用convertAndSendToUser
向/topic/test
主题发送消息,看起来差不多正确。
现在,您如何获得“myUser”
值?
您可以在握手过程中从request.getUser主体()
获取此值,或者在接收消息时注入主体
;在这里也可以使用sesionId。您可以查看此提交以了解有关此事的更多详细信息。
我使用Spring的STOMP over WebSocket实现与一个全功能的ActiveMQ代理。当用户向主题订阅时,在成功订阅之前必须通过一些权限逻辑。我使用ChannelInterceptor应用权限逻辑,如下所示: WebSocketConfig。爪哇: WebSocketSecurityConfig.java: MySubscriptionInterceptor。爪哇: 当没有足够权限的
我使用的是Simado GDT11调制解调器和丰富的USB到串行端口驱动程序。新连接出现在我的设备管理器中 我使用的是smslib示例中指定的基本类,但总有一些错误表明设备没有响应。由于使用USB端口,我添加了轮询参数,但没有效果。Commtest实用程序可以连接到同一个端口,所以我认为端口号不是问题。 Stacktrace: 代码:
我正在尝试使用SpringWebSocket和stomp创建一个聊天应用程序 我正在使用Spring 4.1.1,Stomp。js,ActiveMQ 5.9 在此用户可以通过登录应用程序向他/她的每个朋友发送消息,这些朋友也已登录。为了向特定用户发送消息,我采取以下步骤: 1)用户登录 2)用户订阅“/user/queue/messaging”目的地 这将用于相互发送用户的私人消息 3)当用户想要
Google::API::ClientError(InvalidArgument:需要收件人地址) 我检查过用ruby gmail api V0.9发送电子邮件,我也发现了这一点,但它使用了类,而我在gmail api ruby客户端库中找不到。当前,包含字符,但我在没有它的情况下对它进行了测试,结果它不起作用。 而且,我还想在邮件中发送附件。
我想建立一个Android应用程序,允许用户发送通知和数据消息给其他用户。我最近才开始使用Firebase,而Firebase云消息传递对我来说仍然很困惑。 我已经实现了使用Firebase实例ID将消息发送到特定的设备。然而,在我的应用程序中,用户可以使用不同的设备注销和登录他们的账户,所以这不是我真正想要的。我阅读了文档,它非常令人困惑,它们提到了向用户组发送消息和主题(只有应用程序可以订阅,
我的代码如下:, 从服务器通知FCM(C#) 我对上述要求的答复 {"multicast_id":5002368547300,"成功": 1,"失败": 0,"canonical_ids": 0,"结果":[{"message_id":"0:14200031 c4rrr5787蛋"}]} 我假设一旦FCM收到新的通知,它将把这些通知推送到各自的Android设备。 但对我来说,它不起作用。