学校风采网站建设需求,西安网站优化排名推广,网站美工培训,江小白网络营销案例分析STOMP 代理中继维护一个与消息代理的“系统”TCP 连接。这个连接仅用于来自服务器端应用程序的消息#xff0c;不用于接收消息。您可以为此连接配置STOMP凭据#xff08;即STOMP帧的login和passcode头部#xff09;。这在XML命名空间和Java配置中都以systemLogin和systemPas…STOMP 代理中继维护一个与消息代理的“系统”TCP 连接。这个连接仅用于来自服务器端应用程序的消息不用于接收消息。您可以为此连接配置STOMP凭据即STOMP帧的login和passcode头部。这在XML命名空间和Java配置中都以systemLogin和systemPasscode属性的形式暴露默认值均为guest。
STOMP代理中继还为每个连接的WebSocket客户端创建一个单独的TCP连接。你可以配置用于代表客户端创建的所有TCP连接的STOMP凭据。这在XML命名空间和Java配置中都以clientLogin和clientPasscode属性的形式暴露默认值均为guest。 STOMP代理中继始终在代表客户转发给代理的每个 CONNECT 帧上设置login和passcode标头。因此WebSocket 客户端不需要设置这些标头。它们将被忽略。正如身份验证部分所述WebSocket 客户端应改为依赖 HTTP 身份验证来保护 WebSocket 端点并建立客户端身份。 STOMP代理中继还在“系统”TCP连接上向消息代理发送和接收心跳。你可以配置发送和接收心跳的时间间隔默认为10秒。如果与代理的连接丢失代理中继会继续尝试重新连接每5秒一次直到成功。
任何Spring Bean都可以实现ApplicationListenerBrokerAvailabilityEvent来接收当到消息代理的“系统”连接丢失和重新建立时的通知。例如一个广播股票报价的股票报价服务可以在没有活跃的“系统”连接时停止尝试发送消息。
默认情况下STOMP代理中继始终保持连接并在连接丢失时根据需要重新连接到相同的主机和端口。如果你希望提供多个地址则在每次尝试连接时你可以配置一个地址提供者而不是固定的主机和端口。以下示例展示了如何做到这一点
Configuration
EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {*// ...*Overridepublic void configureMessageBroker(MessageBrokerRegistry registry) {registry.enableStompBrokerRelay(/queue/, /topic/).setTcpClient(createTcpClient());registry.setApplicationDestinationPrefixes(/app);}private ReactorNettyTcpClientbyte[] createTcpClient() {return new ReactorNettyTcpClient(client - client.addressSupplier(() - ... ),new StompReactorNettyCodec());}
}你还可以使用virtualHost属性配置STOMP代理中继。该属性的值被设置为每个CONNECT帧的host 标头这可能会很有用例如在云环境中建立TCP连接的实际主机与提供基于云的STOMP服务的主机不同。