如何在SockJS-STOMP上禁用调试信息

67

我有以下情况:

 var options = {
        protocols_whitelist : [ "websocket", "xhr-streaming", "xdr-streaming", "xhr-polling", "xdr-polling", "iframe-htmlfile", "iframe-eventsource", "iframe-xhr-polling" ],
        debug : false
    };

    var socket = new SockJS("/mmyurl/",undefined,options);
    var stompClient = Stomp.over(socket);
    stompClient.connect({
        company : "XXXXX"
    }, function(frame) {
        stompClient.subscribe('/topic/mytopic', function(message){ 
            var myitem = JSON.parse(message.body);

        });

一切都很好,问题在于JavaScript控制台中充斥着像这样的调试消息:

<<< MESSAGE
content-type:application/json;charset=UTF-8
subscription:sub-1
message-id:o6g660dt-113
destination:/topic/mytopic
content-length:411

我希望你能够禁用这些消息。

我尝试了更改一些选项,也尝试了简单注册:

var socket = new SockJS("/mmyurl/");

但它不起作用。

有禁用调试信息的方法吗?

非常感谢任何帮助。

3个回答

121

好的,我找到了解决方案。

我添加了这段代码:

stompClient.debug = null

这样就禁用了调试功能。


19
对于其他前来此处的人,文档(http://jmesnil.net/stomp-websocket/doc/)指出你可以将client.debug设置为任何函数,每个消息都会运行该函数。因此,除了能够将debug设置为“null”,你还可以将其更改为任何函数以管理自己的调试(通过GET变量或任何你想要的方式进行设置)。 - Dave Lugg
4
它应该设置为不执行任何操作的函数。当前的StompJS版本不会检查debug是否被设置,它将尝试执行它。当将debug设置为null时,它会抛出一个错误。 - jpietzsch

53

我尝试了JR的答案,但开始收到错误信息 - 将debug更改为空函数后可以正常运行...

stompClient.debug = () => {};

2
或者 stompClient.debug = f => f;(我觉得这样打起来更容易) - Frozen Crayon
1
这是2022年最佳答案。 - Tim

0
如果你想过滤Stomp.js的日志,你可以使用以下的实现方法。
stompClient.debug = (log) => {
   if (JSON.stringify(log).includes('SUBSCRIBE')) {
      return;
   }
   window.console.log(log);
};

有时候,这只是打印一些日志,而其他时候什么都没有。而且从来没有返回任何东西。在控制台上打印东西(除了什么都不做)如何解决问题呢?(除了日志打印之外,这个函数似乎什么都不做,而且,显然,一个什么都不做的函数就是一个有效的答案...如果我们相信那个十年前的答案已经说过的话)。请在回答旧问题时,确保带来一些新的东西,而不是已经存在的答案中已经说过的。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接