Ably Pub/Sub 实时 ILoggerSink LogEvent 不工作

Posted

技术标签:

【中文标题】Ably Pub/Sub 实时 ILoggerSink LogEvent 不工作【英文标题】:Ably Pub/Sub Realtime ILoggerSink LogEvent not working 【发布时间】:2021-01-09 04:44:24 【问题描述】:

我正在使用带有 Ably .NET 实时库版本 1.2.1 的 VB.NET。我有一个包装类设置和管理 Ably。该类实现 ILoggerSink。它正在设置通道,如来自班级不同部分的这些 sn-ps 所示:

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

同样值得注意的是这个类是一个单例。

【问题讨论】:

【参考方案1】:

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

类似Logger.LoggerSink = Me

您需要小心,因为 Logger 是静态的,整个程序只有一次实例。如果您要实例化多个Ably 类的实例,这将是一个问题。

通常建议您拥有 1 个 RealtimeClient 实例,这样您就可以使用上面的代码了。

【讨论】:

以上是关于Ably Pub/Sub 实时 ILoggerSink LogEvent 不工作的主要内容,如果未能解决你的问题,请参考以下文章

在 Ably 上,我没有收到消息,我该如何调试?

如何使用 ably.io 设置电子商务消息传递解决方案

如果我需要将 Ably 的服务器从防火墙列入白名单,我应该添加哪些端口、IP 和/或域?

将新的 GitHub 提交实时排队到 Google Pub/Sub

回收 Ably 实时连接

何时使用 Firestore 与 Pub/Sub