小编har*_*z89的帖子

如何使用Spring WebSocket向STOMP客户端发送ERROR消息?

我使用Spring的STOMP而不是WebSocket实现,使用功能齐全的ActiveMQ代理.当用户SUBSCRIBE访问某个主题时,在成功订阅之前,他们必须通过一些权限逻辑.我正在使用ChannelInterceptor来应用权限逻辑,如下所示:

WebSocketConfig.java:

@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

  @Override
  public void registerStompEndpoints(StompEndpointRegistry registry) {
    registry.addEndpoint("/stomp")
      .setAllowedOrigins("*")
      .withSockJS();
  }

  @Override
  public void configureMessageBroker(MessageBrokerRegistry registry) {
    registry.enableStompBrokerRelay("/topic", "/queue")
      .setRelayHost("relayhost.mydomain.com")
      .setRelayPort(61613);
  }

  @Override
  public void configureClientInboundChannel(ChannelRegistration registration) {
    registration.setInterceptors(new MySubscriptionInterceptor());
  }


}
Run Code Online (Sandbox Code Playgroud)

WebSocketSecurityConfig.java:

public class WebSocketSecurityConfig extends AbstractSecurityWebSocketMessageBrokerConfigurer {

  @Override
  protected void configureInbound(MessageSecurityMetadataSourceRegistry messages) {
    messages
      .simpSubscribeDestMatchers("/stomp/**").authenticated()
      .simpSubscribeDestMatchers("/user/queue/errors").authenticated()
      .anyMessage().denyAll();
  }

}
Run Code Online (Sandbox Code Playgroud)

MySubscriptionInterceptor.java:

public class MySubscriptionInterceptor extends ChannelInterceptorAdapter {

  @Override
  public Message<?> preSend(Message<?> message, MessageChannel channel) {

    StompHeaderAccessor headerAccessor= StompHeaderAccessor.wrap(message);
    Principal …
Run Code Online (Sandbox Code Playgroud)

java activemq-classic stomp spring-messaging spring-websocket

13
推荐指数
1
解决办法
6666
查看次数

获取URL查询字符串与$ routeParams与$ location.$$搜索之间的区别

如果我有一个始终作为查询字符串传递的特定路由参数,那么使用angular的$routeParams服务检索param 和使用其$location.$$search服务之间是否存在差异?如果是这样,一个比另一个好吗?


网址: //localhost:80/app/profile?id=42

$routeParams 做法:

app.controller('ProfileController', ['$routeParams', function($routeParams) {
  console.log($routeParams.id);
}]);
Run Code Online (Sandbox Code Playgroud)


$location 做法:

app.controller('ProfileController', ['$location', function($location) {
  console.log($location.$$search.id);
}]);
Run Code Online (Sandbox Code Playgroud)


我已经$location在控制器中作为依赖注入,需要执行问题中详述的行为.此外,控制器的模块还没有依赖ngRoute.

angularjs ngroute

3
推荐指数
1
解决办法
3399
查看次数

使用"alert"和"confirm"作为变量名

根据这篇MDN文章和我可以找到的任何其他来源,"alert"和"confirm"不是JavaScript中的保留字.为什么它们没有列在这里,它们是否可以安全地用作函数体内的变量名?

javascript reserved-words

1
推荐指数
1
解决办法
472
查看次数