0

Spring Messaging と Spring Socket を使用して4.0.5.RELEASEいます。

プレーンな String メッセージをブローカーに送信したいと思います。たとえば、サーバー側で次のことを行うと、そのような文字列がエスケープされることがわかります。

private MessageSendingOperations<String> messagingTemplate;
messagingTemplate.convertAndSend("/app/someendpoint", "This is a String with a quotation mark: \". ");

サブスクライブした STOMP クライアントは、次のメッセージを受け取ります。

<<< MESSAGE
content-type:application/json;charset=UTF-8
subscription:sub-0
message-id:l6dvrpro-3
destination:/app/someendpoint
content-length:46

"This is a String with a quotation mark: \". " 

そのため、ペイロードには周囲の引用符とエスケープされた引用符が含まれます。

エスケープされていない「通常の」文字列を送信するにはどうすればよいですか?

4

2 に答える 2

1

したがって、メッセージを JSON に変換する必要はありません。

すべてのメッセージに必要な場合は、オーバーライドしてアクティブなs のWebSocketMessageBrokerConfigurer.configureMessageConverters()リストから JSON コンバーターを除外します。MessageConverter

@Override
public boolean configureMessageConverters(List<MessageConverter> converters) {
    converters.add(new StringMessageConverter());
    return false; // Prevent registration of default converters
}

このメッセージだけに必要な場合は、そのコンテンツ タイプを手動で指定してみてください。

messagingTemplate.convertAndSend(
    "/app/someendpoint", 
    "This is a String with a quotation mark: \". ",
    Collections.singletonMap("content-type", "text/plain");
于 2014-06-23T12:49:21.650 に答える