当建立的websocket成功接收到钉钉服务端的消息后,做一个ack回复,可以一定程度上避免重复推送的问题;以下为使用vb.net编写代码片段(可以使用ai工具翻译为其他语言代码),供大家参考:
Private Sub OnMessageReceived(sender As Object, e As MessageReceivedEventArgs) '
Dim ws As WebSocket = CType(sender, WebSocket)
' 假设e.Message是一个JSON字符串,我们需要先解析它
Dim message As JObject = JObject.Parse(e.Message)
Dim headers As JObject = message("headers").ToObject(Of JObject)()
' 检查消息类型
Dim messageType As String = message("type").ToString()
' 发送ACK
If Not headers Is Nothing AndAlso headers("messageId").ToString.Trim <> "" Then
Dim messageId As String = headers("messageId").ToString()
Dim responseHeaders As New With {.contentType = "application/json", .messageId = messageId}
Dim responseObj As New With {.code = 200, .headers = responseHeaders, .message = "OK"}'发送“Ok”字符给钉钉服务端
' 序列化响应对象为 JSON 字符串
Dim responseJson As String = JsonConvert.SerializeObject(responseObj)
' 发送ACK响应
ws.Send(responseJson)
End If
end sub
有关钉钉stream消息推送重复
于 2024-09-10 15:45:25 首次发布