提问者:小点点

如何限制客户端连接到我的跺脚websocket处理程序?


我需要跟踪用户在Spring 4. x中向我的跺脚代理打开websocket。跺脚endpoint以通常的方式配置:

@Configuration
@EnableWebSocketMessageBroker
public class StompWebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

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

  @Override
  public void configureMessageBroker(MessageBrokerRegistry registry) {
    registry.setApplicationDestinationPrefixes("/app")
            .enableSimpleBroker("/queue", "/topic");
  }

}

我尝试实现ApplicationListener接口以接收SessionConnectEvent SessionConnectedEvent,但我无法从这些事件中获取远程主机ip。

我应该如何获取连接到我的服务的客户端的IP?

我的目标是限制从同一个ip到我的websocket处理程序的连接数。


共1个答案

匿名用户

方法是自定义HandshakeHandler和覆盖函数,如isvalidOrigin。

要使用XML配置添加HandshakeHandler,可以使用如下代码段:

  <bean id="customHandler" class="my.CustomWebsocketHandshakeHandler"/>

  <websocket:message-broker application-destination-prefix="/app">
    <websocket:stomp-endpoint path="/Stomp">
      <websocket:handshake-handler ref="customHandler"/>
    </websocket:stomp-endpoint>
    <websocket:simple-broker prefix="/topic,/queue" />
  </websocket:message-broker>

但是,我无法使用Java配置生成等效配置。

在这个问题上我将非常感激你的帮助