微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Ably发布/订阅实时ILoggerSink LogEvent不起作用

如何解决Ably发布/订阅实时ILoggerSink LogEvent不起作用

我正在将VB.NET与Ably .NET Realtime库1.2.1版一起使用。我有一个包装器类来设置和管理Ably。该类实现ILoggerSink。它正在按照班上不同部分的这些代码片段所示设置频道:

Public Class Ably
    Implements Idisposable,ILoggerSink
.
.
Private WithEvents mChannel As IRealtimeChannel
Private Delegate Sub ReceiveMessageDelegate(ByVal m As Message)
Private Delegate Sub PublishCallbackDelegate(ByVal result As Boolean,ByVal einfo As ErrorInfo)
Private mpublishCallbackDelegate As PublishCallbackDelegate = AddressOf PublishCallback
Private mReceiveMessageDelegate As ReceiveMessageDelegate = AddressOf ReceiveMessage
.
.
Dim opt = New ClientOptions(Main.AblyConnectionKey) With {.EchoMessages = False,.LogLevel = LogLevel.Debug}
Dim art = New AblyRealtime(opt)
mChannel = art.Channels.Get(idstr)
mChannel.Subscribe(Sub(m) mReceiveMessageDelegate(m))
.
.
mChannel.Publish(mname,mdata,Sub(m,n) mpublishCallbackDelegate(m,n))

接口方法以以下定义开头:

Public Sub LogEvent(level As LogLevel,message As String) Implements ILoggerSink.LogEvent
'The rest of the sub here.

该类管理的所有其他Ably事情都起作用-附加到频道,发布消息和接收消息。该类获取mChannel.StateChanged和mChannel。[Error]事件。

永远不会调用LogEvent方法。我想念什么?谢谢。

更新:可接受的答案有效,这是我在任何文档中都没看到的简单事情。这是更正的代码行:

Dim opt = New ClientOptions(Main.AblyConnectionKey) With {.EchoMessages = False,.LogLevel = LogLevel.Debug,.LogHander = Me}

也值得注意的是,此类是单身人士。

解决方法

缺少的部分是您需要告诉图书馆要使用哪个LoggerSink

类似Logger.LoggerSink = Me

您需要注意,因为可靠的Logger是静态的,并且整个程序只有一个实例。如果您要实例化Ably类的多个实例,将是一个问题。

通常建议无论如何都要有1个RealtimeClient实例,这样您可能会对上面的代码感到满意。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。